diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2014-06-03 03:33:28 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-06-19 15:43:33 -0400 |
commit | 807407c0a29b1e9fe35565f5a671ef3a9dd9f00c (patch) | |
tree | 2727331d63431fecb0308bdac123d719ec9c332c /kernel/workqueue.c | |
parent | f05b558d7e0368e0511a098c4beb9654e41246c4 (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.c | 9 |
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 | /* |