[Hardy] SRU: Fix an suspend panic when streaming audio to bluetooth headset

Stefan Bader stefan.bader at canonical.com
Fri Feb 13 18:55:44 UTC 2009


Colin Ian King wrote:
> Hi Stefan,
> On Fri, 2009-02-13 at 18:42 +0100, Stefan Bader wrote:
>> Colin Ian King wrote:
>>> SRU justification:
>>>
>>> Impact: Performing a suspend while streaming audio to a bluetooth
>>> headset trips a kernel panic in the bluetooth USB driver very late in
>>> the suspend process (after console messages are turned off).
>>>
>>> The panic occurs when hci_usb_tx_complete() calls _urb_unlink()
>>> on an _urb which has been previously been removed from a list.
>>> This happens because hci_usb_suspend() dequeues the _urb
>>> and then calls usb_kill_urb() which is the wrong way around.
>>>
>>> Fix: Put _urb on the killed list before calling usb_kill_urb() - this
>>> ensures that the _urb is on a list and hence won't cause a panic when
>>> removed using _urb_unlink().
>>>
>>> Testcase: Doing a suspend with audio streaming to a bluetooth headset
>>> using Elisa causes a panic.  With the patch suspend/resume works
>>> correctly.
>>>
>>> Attached: The patch.
>>>
>>>
>> ACK, Colin might this still be applicable to later kernels or has bt changed 
>> too much in the meantime?
>>
> Should apply also to Intrepid + Jaunty too by the look of it
> 
Maybe the allmighty upstream tip as well? Might grant a bit of a reward after 
all the debug pain? ;-)


-- 

When all other means of communication fail, try words!






More information about the kernel-team mailing list