aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/workqueue.c
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2014-06-03 03:33:28 -0400
committerTejun Heo <tj@kernel.org>2014-07-01 17:40:14 -0400
commit85327af61d4cb1700d4c71e8080f7c7df9bccafb (patch)
tree513b491cc634aa37bd8cb7b0810c694dafc88ff1 /kernel/workqueue.c
parent3de5e88485b22f30403045bd83d4815ae2207b19 (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.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 68461b8d9b39..f344334f5690 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -2015,13 +2015,7 @@ __acquires(&pool->lock)
2015 2015
2016 lockdep_copy_map(&lockdep_map, &work->lockdep_map); 2016 lockdep_copy_map(&lockdep_map, &work->lockdep_map);
2017#endif 2017#endif
2018 /* 2018 WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) &&
2019 * Ensure we're on the correct CPU. DISASSOCIATED test is
2020 * necessary to avoid spurious warnings from rescuers servicing the
2021 * unbound or a disassociated pool.
2022 */
2023 WARN_ON_ONCE(!(worker->flags & WORKER_UNBOUND) &&
2024 !(pool->flags & POOL_DISASSOCIATED) &&
2025 raw_smp_processor_id() != pool->cpu); 2019 raw_smp_processor_id() != pool->cpu);
2026 2020
2027 /* 2021 /*