From: Andrei Warkentin Date: Sat, 4 Dec 2010 02:11:21 +0000 (-0600) Subject: mdm6600: Workqueue worker missing synchronization X-Git-Tag: firefly_0821_release~9834^2~278 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=330864b638688a58d2d845a3a9fd997a6ace9387;p=firefly-linux-kernel-4.4.55.git mdm6600: Workqueue worker missing synchronization 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 --- diff --git a/drivers/usb/serial/mdm6600.c b/drivers/usb/serial/mdm6600.c index 7a8dddde0a0c..caa8164f360a 100644 --- a/drivers/usb/serial/mdm6600.c +++ b/drivers/usb/serial/mdm6600.c @@ -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)