diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2013-03-20 03:28:01 +0800 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-03-20 10:19:09 -0700 |
commit | 12ee4fc67c00895b3d740297f7ca447239c1983b (patch) | |
tree | a6e57caeada640e5b11100400e5acbec5f28425d /kernel/workqueue.c | |
parent | 7dbc725e4749d822eb6dc962526049af1586f041 (diff) | |
download | linux-12ee4fc67c00895b3d740297f7ca447239c1983b.tar.bz2 |
workqueue: add missing POOL_FREEZING
get_unbound_pool() forgot to set POOL_FREEZING if workqueue_freezing
is set and a new pool could go out of sync with the global freezing
state.
Fix it by adding POOL_FREEZING if workqueue_freezing. wq_mutex is
already held so no further locking is necessary. This also removes
the unused static variable warning when !CONFIG_FREEZER.
tj: Updated commit message.
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 | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index e38d035bf671..40f4017285a0 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3503,6 +3503,9 @@ static struct worker_pool *get_unbound_pool(const struct workqueue_attrs *attrs) if (!pool || init_worker_pool(pool) < 0) goto fail; + if (workqueue_freezing) + pool->flags |= POOL_FREEZING; + lockdep_set_subclass(&pool->lock, 1); /* see put_pwq() */ copy_workqueue_attrs(pool->attrs, attrs); |