From: Lai Jiangshan Date: Tue, 3 Jun 2014 07:33:28 +0000 (+0800) Subject: workqueue: stronger test in process_one_work() X-Git-Tag: v3.17-rc1~148^2~6 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=807407c0a29b1e9fe35565f5a671ef3a9dd9f00c;p=karo-tx-linux.git 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 CC: Sasha Levin Signed-off-by: Lai Jiangshan Signed-off-by: Tejun Heo --- 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) 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) && + /* ensure we're on the correct CPU */ + WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) && raw_smp_processor_id() != pool->cpu); /*