summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2020-11-22 13:19:53 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2020-11-22 13:19:53 -0800
commit855cf1ee4726bfa2077b2226bff507babe1c8dff (patch)
treed754983f8efaa339c98542cb0eaba42d397656db
parent68d3fa235fd83ab0fd36c367c0530d16c764051b (diff)
parent43be4388e94b915799a24f0eaf664bf95b85231f (diff)
downloadlinux-855cf1ee4726bfa2077b2226bff507babe1c8dff.tar.gz
linux-855cf1ee4726bfa2077b2226bff507babe1c8dff.tar.bz2
linux-855cf1ee4726bfa2077b2226bff507babe1c8dff.zip
Merge tag 'locking-urgent-2020-11-22' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull locking fix from Thomas Gleixner: "A single fix for lockdep which makes the recursion protection cover graph lock/unlock" * tag 'locking-urgent-2020-11-22' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: lockdep: Put graph lock/unlock under lock_recursion protection
-rw-r--r--kernel/locking/lockdep.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index d9fb9e19d2ed..c1418b47f625 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -108,19 +108,21 @@ static inline void lockdep_lock(void)
{
DEBUG_LOCKS_WARN_ON(!irqs_disabled());
+ __this_cpu_inc(lockdep_recursion);
arch_spin_lock(&__lock);
__owner = current;
- __this_cpu_inc(lockdep_recursion);
}
static inline void lockdep_unlock(void)
{
+ DEBUG_LOCKS_WARN_ON(!irqs_disabled());
+
if (debug_locks && DEBUG_LOCKS_WARN_ON(__owner != current))
return;
- __this_cpu_dec(lockdep_recursion);
__owner = NULL;
arch_spin_unlock(&__lock);
+ __this_cpu_dec(lockdep_recursion);
}
static inline bool lockdep_assert_locked(void)