summaryrefslogtreecommitdiffstats
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-06-19 15:43:33 -0400
commit807407c0a29b1e9fe35565f5a671ef3a9dd9f00c (patch)
tree2727331d63431fecb0308bdac123d719ec9c332c /kernel/workqueue.c
parentf05b558d7e0368e0511a098c4beb9654e41246c4 (diff)
workqueue: stronger test in process_one_work()
After the recent changes, 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. Update the sanity check in process_one_work() accordingly. 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 will not hide any possible bug which can be caught by the old test. tj: Minor updates to the description. 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.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 129e4c3452ee..a3021d63f62d 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -2020,13 +2020,8 @@ __acquires(&pool->lock)
2020 2020
2021 lockdep_copy_map(&lockdep_map, &work->lockdep_map); 2021 lockdep_copy_map(&lockdep_map, &work->lockdep_map);
2022#endif 2022#endif
2023 /* 2023 /* ensure we're on the correct CPU */
2024 * Ensure we're on the correct CPU. DISASSOCIATED test is 2024 WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) &&
2025 * necessary to avoid spurious warnings from rescuers servicing the
2026 * unbound or a disassociated pool.
2027 */
2028 WARN_ON_ONCE(!(worker->flags & WORKER_UNBOUND) &&
2029 !(pool->flags & POOL_DISASSOCIATED) &&
2030 raw_smp_processor_id() != pool->cpu); 2025 raw_smp_processor_id() != pool->cpu);
2031 2026
2032 /* 2027 /*