Takashi Iwai wrote:
In snd_usbmidi_error_timer(), the driver tries to resubmit MIDI input URBs to reactivate the MIDI stream, but this causes the error when some of URBs are still pending
I wonder what kept the other URBs alive.
For avoiding these errors, check the pending URBs and skip resubmitting such ones.
Reported-and-tested-by: Stefan Seyfried stefan.seyfried@googlemail.com Cc: stable@vger.kernel.org Signed-off-by: Takashi Iwai tiwai@suse.de
Anyway, Acked-by: Clemens Ladisch clemens@ladisch.de
sound/usb/midi.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/sound/usb/midi.c b/sound/usb/midi.c index d3d49525a16b..5bfb695547f8 100644 --- a/sound/usb/midi.c +++ b/sound/usb/midi.c @@ -365,6 +365,8 @@ static void snd_usbmidi_error_timer(unsigned long data) if (in && in->error_resubmit) { in->error_resubmit = 0; for (j = 0; j < INPUT_URBS; ++j) {
if (atomic_read(&in->urbs[j]->use_count))
continue; in->urbs[j]->dev = umidi->dev; snd_usbmidi_submit_urb(in->urbs[j], GFP_ATOMIC); }