• Henry Lin's avatar
    ALSA: usb-audio: not submit urb for stopped endpoint · 52869931
    Henry Lin authored
    While output urb's snd_complete_urb() is executing, calling
    prepare_outbound_urb() may cause endpoint stopped before
    prepare_outbound_urb() returns and result in next urb submitted
    to stopped endpoint. usb-audio driver cannot re-use it afterwards as
    the urb is still hold by usb stack.
    This change checks EP_FLAG_RUNNING flag after prepare_outbound_urb() again
    to let snd_complete_urb() know the endpoint already stopped and does not
    submit next urb. Below kind of error will be fixed:
    [  213.153103] usb 1-2: timeout: still 1 active urbs on EP #1
    [  213.164121] usb 1-2: cannot submit urb 0, error -16: unknown error
    Signed-off-by: default avatarHenry Lin <henryl@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20191113021420.13377-1-henryl@nvidia.com
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>