aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/usbmidi.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-10-02 08:50:22 -0400
committerJaroslav Kysela <perex@perex.cz>2008-10-10 07:41:48 -0400
commit7a17daae8ed71bf3259d905a4fc48a5b424fa935 (patch)
tree98c6208065121b01b2332a181c3c17acc1cca547 /sound/usb/usbmidi.c
parent669faba27f2f7b04b9228d20e30e7f584f0becd5 (diff)
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>
Diffstat (limited to 'sound/usb/usbmidi.c')
-rw-r--r--sound/usb/usbmidi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c
index c0c7770198ad..5962e4b84423 100644
--- a/sound/usb/usbmidi.c
+++ b/sound/usb/usbmidi.c
@@ -1112,6 +1112,15 @@ void snd_usbmidi_disconnect(struct list_head* p)
1112 } 1112 }
1113 if (ep->in) 1113 if (ep->in)
1114 usb_kill_urb(ep->in->urb); 1114 usb_kill_urb(ep->in->urb);
1115 /* free endpoints here; later call can result in Oops */
1116 if (ep->out) {
1117 snd_usbmidi_out_endpoint_delete(ep->out);
1118 ep->out = NULL;
1119 }
1120 if (ep->in) {
1121 snd_usbmidi_in_endpoint_delete(ep->in);
1122 ep->in = NULL;
1123 }
1115 } 1124 }
1116 del_timer_sync(&umidi->error_timer); 1125 del_timer_sync(&umidi->error_timer);
1117} 1126}