Oliver Neukum <[email protected]> writes:

> On Thu, 2013-11-14 at 10:03 +0800, wangbiao wrote:
>> From: wang, biao <[email protected]>
>> Date: Mon, 11 Nov 2013 10:23:40 +0800
>> Subject: [PATCH] usbnet: fix race condition caused spinlock bad magic issue
>> 
>> there is race between usbnet_terminate_urbs and usbnet_bh.
>> for example:
>>     cpu 0                                     cpu 1
>>                                           usbnet_suspend
>> usbnet_bh {                               ->usbnet_terminate_urbs {
>>                                               dev->wait = &unlink_wakeup;
>>                                               while(....){..}//break
>>     if(dev->wait) is true
>>                                                    dev->wait=NULL
>>                                           }//unlink_wakeup is invalid
>>     __wake_up(dev->wait)//garbage value
>> }
>> 
>> the race is due to unprotection of dev->wait, so this patch involves a
>> spinlock to avoid it.
>> 
>> Signed-off-by: wang, biao <[email protected]>
>> Signed-off-by: Zhang, Di <[email protected]>
> Acked-by: Oliver Neukum <[email protected]>


Really?  Serializing the suspend of all usbnet devices seems like a good
idea?


Bjørn
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to