Messages in this thread | | | Date | Mon, 27 Aug 2012 13:03:58 -0700 | From | Tejun Heo <> | Subject | Re: [PATCH 5/7] workqueue: ensure the wq_worker_sleeping() see the right flags |
| |
Hello,
On Tue, Aug 28, 2012 at 01:58:25AM +0800, Lai Jiangshan wrote: > The compiler may compile this code into TWO write/modify instructions. > worker->flags &= ~WORKER_UNBOUND; > worker->flags |= WORKER_REBIND; > > so the other CPU may see the temporary of worker->flags which has > not WORKER_UNBOUND nor WORKER_REBIND, it will wrongly do local wake up. > > so we use one write/modify instruction explicitly instead. > > This bug will not occur on idle workers, because they have another > WORKER_NOT_RUNNING flags.
Yeap, I think this got broken while moving around when DISASSOCIATED is cleared. Can you please put this at the head of the series?
Thanks.
-- tejun
| |