diff options
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/usbmidi.c | 9 |
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 | } |