Преглед на файлове

ALSA: usb - Fix possible Oops at USB-MIDI disconnection

The endpoints should be released immediately at disconnection
rather than the delayed release.  This could be a reason of Oops
at USB-audio device disconnection being used.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai преди 16 години
родител
ревизия
7a17daae8e
променени са 1 файла, в които са добавени 9 реда и са изтрити 0 реда
  1. 9 0
      sound/usb/usbmidi.c

+ 9 - 0
sound/usb/usbmidi.c

@@ -1112,6 +1112,15 @@ void snd_usbmidi_disconnect(struct list_head* p)
 		}
 		if (ep->in)
 			usb_kill_urb(ep->in->urb);
+		/* free endpoints here; later call can result in Oops */
+		if (ep->out) {
+			snd_usbmidi_out_endpoint_delete(ep->out);
+			ep->out = NULL;
+		}
+		if (ep->in) {
+			snd_usbmidi_in_endpoint_delete(ep->in);
+			ep->in = NULL;
+		}
 	}
 	del_timer_sync(&umidi->error_timer);
 }