diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-11-23 00:19:53 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-11-23 00:19:53 +0300 |
commit | 855cf1ee4726bfa2077b2226bff507babe1c8dff (patch) | |
tree | d754983f8efaa339c98542cb0eaba42d397656db /kernel | |
parent | 68d3fa235fd83ab0fd36c367c0530d16c764051b (diff) | |
parent | 43be4388e94b915799a24f0eaf664bf95b85231f (diff) | |
download | linux-855cf1ee4726bfa2077b2226bff507babe1c8dff.tar.xz |
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
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/locking/lockdep.c | 6 |
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) |