Thread (1 message) 1 message, 1 author, 2013-11-14

Re: [PATCH V3] usbnet: fix race condition caused spinlock bad magic issue

From: Bjørn Mork <hidden>
Date: 2013-11-14 09:18:55
Also in: lkml

Oliver Neukum [off-list ref] writes:
On Thu, 2013-11-14 at 10:03 +0800, wangbiao wrote:
quoted
From: wang, biao <redacted>
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 <redacted>
Signed-off-by: Zhang, Di <redacted>
Acked-by: Oliver Neukum <redacted>

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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help