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>
This commit is contained in:
@@ -2020,13 +2020,8 @@ __acquires(&pool->lock)
|
|||||||
|
|
||||||
lockdep_copy_map(&lockdep_map, &work->lockdep_map);
|
lockdep_copy_map(&lockdep_map, &work->lockdep_map);
|
||||||
#endif
|
#endif
|
||||||
/*
|
/* ensure we're on the correct CPU */
|
||||||
* Ensure we're on the correct CPU. DISASSOCIATED test is
|
WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) &&
|
||||||
* 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) &&
|
|
||||||
raw_smp_processor_id() != pool->cpu);
|
raw_smp_processor_id() != pool->cpu);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user