All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] locking/lockdep: Add debug_locks check in __lock_downgrade()
@ 2019-01-10  4:03 Waiman Long
  2019-01-10 10:21 ` Dmitry Vyukov
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Waiman Long @ 2019-01-10  4:03 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Will Deacon
  Cc: linux-kernel, Tetsuo Handa, Waiman Long

Tetsuo Handa had reported he saw an incorrect "downgrading a read lock"
warning right after a previous lockdep warning. It is likely that the
previous warning turned off lock debugging causing the lockdep to have
inconsistency states leading to the lock downgrade warning.

Fix that by add a check for debug_locks at the beginning of
__lock_downgrade().

Signed-off-by: Waiman Long <longman@redhat.com>
Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
---
 kernel/locking/lockdep.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 9593233..e805fe3 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -3535,6 +3535,9 @@ static int __lock_downgrade(struct lockdep_map *lock, unsigned long ip)
 	unsigned int depth;
 	int i;
 
+	if (unlikely(!debug_locks))
+		return 0;
+
 	depth = curr->lockdep_depth;
 	/*
 	 * This function is about (re)setting the class of a held lock,
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-02-04  8:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-10  4:03 [PATCH] locking/lockdep: Add debug_locks check in __lock_downgrade() Waiman Long
2019-01-10 10:21 ` Dmitry Vyukov
2019-01-14 13:23   ` Tetsuo Handa
2019-01-14 13:36   ` Peter Zijlstra
2019-01-14 13:39     ` Dmitry Vyukov
2019-01-20  2:50     ` Tetsuo Handa
2019-01-21 11:29 ` [tip:locking/core] " tip-bot for Waiman Long
2019-02-04  8:56 ` tip-bot for Waiman Long

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.