aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/workqueue.c
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2014-06-03 15:33:08 +0800
committerTejun Heo <tj@kernel.org>2014-06-19 12:32:27 -0400
commit92b69f509196fc5afc6a357511b864d372f42419 (patch)
tree8b1a01763814cc6dee4f97f278e4c84656bcf18f /kernel/workqueue.c
parentworkqueue: clear leftover flags when detached (diff)
downloadlinux-dev-92b69f509196fc5afc6a357511b864d372f42419.tar.xz
linux-dev-92b69f509196fc5afc6a357511b864d372f42419.zip
workqueue: sanity check pool->cpu in wq_worker_sleeping()
In theory, pool->cpu is equals to @cpu in wq_worker_sleeping() after worker->flags is checked. And "pool->cpu != cpu" sanity check will help us if something wrong. 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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 4f8d72dae0e8..8474e5752f1f 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -843,7 +843,7 @@ struct task_struct *wq_worker_sleeping(struct task_struct *task, int cpu)
pool = worker->pool;
/* this can only happen on the local cpu */
- if (WARN_ON_ONCE(cpu != raw_smp_processor_id()))
+ if (WARN_ON_ONCE(cpu != raw_smp_processor_id() || pool->cpu != cpu))
return NULL;
/*