diff options
| author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2014-06-03 15:33:28 +0800 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2017-12-05 18:05:42 +0100 |
| commit | cc6552917729a821221fd3a259020e496b6b4189 (patch) | |
| tree | 56bd6434ba521f05421ac4eda75c29a4c3105010 /kernel/workqueue.c | |
| parent | fb749f3b43c0f66fd03f35a895b3547e3cca9d62 (diff) | |
workqueue: stronger test in process_one_work()
When POOL_DISASSOCIATED is cleared, the running worker's local CPU should
be the same as pool->cpu without any exception even during cpu-hotplug.
This patch changes "(proposition_A && proposition_B && proposition_C)"
to "(proposition_B && proposition_C)", so if the old compound
proposition is true, the new one must be true too. so this won't hide
any possible bug which can be hit by old test.
tj: Minor description update and dropped the obvious comment.
CC: Jason J. Herne <jjherne@linux.vnet.ibm.com>
CC: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/workqueue.c')
| -rw-r--r-- | kernel/workqueue.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 5708b5296..893aac8b8 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -2180,13 +2180,7 @@ __acquires(&pool->lock) lockdep_copy_map(&lockdep_map, &work->lockdep_map); #endif - /* - * Ensure we're on the correct CPU. DISASSOCIATED test is - * necessary to avoid spurious warnings from rescuers servicing the - * unbound or a disassociated pool. - */ - WARN_ON_ONCE(!(worker->flags & WORKER_UNBOUND) && - !(pool->flags & POOL_DISASSOCIATED) && + WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) && raw_smp_processor_id() != pool->cpu); /* |
