diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2014-06-03 09:31:45 +0200 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-06-19 18:05:00 +0200 |
commit | 61d0fbb4b6f707d57555c9dc6d8a69144e0e8641 (patch) | |
tree | e0f00c368eb7330ac80c1a2854dad7462a5883cb | |
parent | epoll: fix use-after-free in eventpoll_release_file (diff) | |
download | linux-61d0fbb4b6f707d57555c9dc6d8a69144e0e8641.tar.xz linux-61d0fbb4b6f707d57555c9dc6d8a69144e0e8641.zip |
workqueue: use "pool->cpu < 0" to stand for an unbound pool
There is a piece of sanity checks code in the put_unbound_pool().
The meaning of this code is "if it is not an unbound pool, it will complain
and return" IIUC. But the code uses "pool->flags & POOL_DISASSOCIATED"
imprecisely due to a non-unbound pool may also have this flags.
We should use "pool->cpu < 0" to stand for an unbound pool, so we covert the
code to it.
There is no strictly wrong if we still keep "pool->flags & POOL_DISASSOCIATED"
here, but it is just a noise if we keep it:
1) we focus on "unbound" here, not "[dis]association".
2) "pool->cpu < 0" already implies "pool->flags & POOL_DISASSOCIATED".
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to '')
-rw-r--r-- | kernel/workqueue.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 6203d2900877..ea2c5de502aa 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3457,7 +3457,7 @@ static void put_unbound_pool(struct worker_pool *pool) return; /* sanity checks */ - if (WARN_ON(!(pool->flags & POOL_DISASSOCIATED)) || + if (WARN_ON(!(pool->cpu < 0)) || WARN_ON(!list_empty(&pool->worklist))) return; |