
Hello,
I encountered a similar problem while developing drivers for the dmx 6fire usb. Perhaps my finding could provide you with some more information about the kernel panic. I found out that if the device is removed, the isoc-packet status indicate an error in the in-urb-retire method; the urb status still is 0. This happens a few ms before the actual disconnect() handler is called. I also looked into the snd-usb-audio driver and could not find any isoc-packet status check. Maybe this could lead to inconsistencies between PCM stream state and urbs.
Greets, Torsten
---- On Wed, 09 Feb 2011 20:13:24 +0100 Pierre-Louis Bossart wrote ----
Fix 100% reproducible kernel panic when a USB audio device is disconnected during playback. When the PCM substream is NULL, any dereference causes a kernel panic. This isn't a recent problem, the crash happened with a 2.6.35 kernel as well
Note that this is only a work-around, it does not address the root cause of this inconsistency between urbs and PCM states. The dmesg below shows two calls to snd_urb_complete, the substream is NULL and the state is either running or stopped. This doesn't make any sense.
Thanks to Sarah Sharp for her help.