summaryrefslogtreecommitdiff
path: root/kernel/workqueue.c
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2013-03-20 03:28:21 +0800
committerTejun Heo <tj@kernel.org>2013-03-20 11:21:34 -0700
commit519e3c1163ce2b2d510b76b0f5b374198f9378f3 (patch)
tree57fc8b79a3e9a64517a328dd626a4df2b2d0227f /kernel/workqueue.c
parent881094532e2a27406a5f06f839087bd152a8a494 (diff)
downloadlwn-519e3c1163ce2b2d510b76b0f5b374198f9378f3.tar.gz
lwn-519e3c1163ce2b2d510b76b0f5b374198f9378f3.zip
workqueue: avoid false negative in assert_manager_or_pool_lock()
If lockdep complains something for other subsystem, lockdep_is_held() can be false negative, so we need to also test debug_locks before triggering WARN. 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.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index b6c5a524d7c4..47f258799bf2 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -305,7 +305,8 @@ static void copy_workqueue_attrs(struct workqueue_attrs *to,
#ifdef CONFIG_LOCKDEP
#define assert_manager_or_pool_lock(pool) \
- WARN_ONCE(!lockdep_is_held(&(pool)->manager_mutex) && \
+ WARN_ONCE(debug_locks && \
+ !lockdep_is_held(&(pool)->manager_mutex) && \
!lockdep_is_held(&(pool)->lock), \
"pool->manager_mutex or ->lock should be held")
#else