--- /dev/null
+From 78b8d5d2ee280c463908fd75f3bdf246bcb6ac8d Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 28 Dec 2009 12:24:22 +0100
+Subject: ALSA: usb-audio - Avoid Oops after disconnect
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 78b8d5d2ee280c463908fd75f3bdf246bcb6ac8d upstream.
+
+As the release of substreams may be done asynchronously from the
+disconnection, close callback needs to check the shutdown flag before
+actually accessing the usb interface.
+
+Reference: Novell bnc#505027
+ http://bugzilla.novell.com/show_bug.cgi?id=565027
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/usb/usbaudio.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/usb/usbaudio.c
++++ b/sound/usb/usbaudio.c
+@@ -1936,7 +1936,7 @@ static int snd_usb_pcm_close(struct snd_
+ struct snd_usb_stream *as = snd_pcm_substream_chip(substream);
+ struct snd_usb_substream *subs = &as->substream[direction];
+
+- if (subs->interface >= 0) {
++ if (!as->chip->shutdown && subs->interface >= 0) {
+ usb_set_interface(subs->dev, subs->interface, 0);
+ subs->interface = -1;
+ }