mdm6600: Workqueue worker missing synchronization
authorAndrei Warkentin <andreiw@motorola.com>
Sat, 4 Dec 2010 02:11:21 +0000 (20:11 -0600)
committerBenoit Goby <benoit@android.com>
Tue, 7 Dec 2010 00:05:33 +0000 (16:05 -0800)
Didn't take into account concurrent execution on mutliple
cores, since global queue is not WQ_NON_REENTRANT. Use
non-reentrant system queue instead now.

Change-Id: Id5b31f7ba344f6e0f0ba63364171d16fd55b90ef
Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
drivers/usb/serial/mdm6600.c

index 7a8dddde0a0c26c685e289d4fa2ad9cecb79aa67..caa8164f360a210237299d06a023ca5675b5332f 100644 (file)
@@ -790,7 +790,7 @@ static void mdm6600_read_bulk_cb(struct urb *u)
 
        usb_anchor_urb(u, &modem->read.pending);
 
-       schedule_work(&modem->read.work);
+       queue_work(system_nrt_wq, &modem->read.work);
 }
 
 static int mdm6600_suspend(struct usb_interface *intf, pm_message_t message)