summaryrefslogtreecommitdiff
path: root/kernel/locking
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-07-31 04:14:08 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2024-08-07 15:31:10 +0300
commitff9bf4b34104955017822e9bc42aeeb526ee2a80 (patch)
tree661b290dc1a3d0189bc82b1e8921e90ef22a6e97 /kernel/locking
parente61dd678601eac53d501dda1eb1bcffec7b11bd6 (diff)
downloadlinux-ff9bf4b34104955017822e9bc42aeeb526ee2a80.tar.xz
lockdep: Fix lockdep_set_notrack_class() for CONFIG_LOCK_STAT
We won't find a contended lock if it's not being tracked. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'kernel/locking')
-rw-r--r--kernel/locking/lockdep.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 58c88220a478..0349f957e672 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -5936,6 +5936,9 @@ __lock_contended(struct lockdep_map *lock, unsigned long ip)
if (DEBUG_LOCKS_WARN_ON(!depth))
return;
+ if (unlikely(lock->key == &__lockdep_no_track__))
+ return;
+
hlock = find_held_lock(curr, lock, depth, &i);
if (!hlock) {
print_lock_contention_bug(curr, lock, ip);
@@ -5978,6 +5981,9 @@ __lock_acquired(struct lockdep_map *lock, unsigned long ip)
if (DEBUG_LOCKS_WARN_ON(!depth))
return;
+ if (unlikely(lock->key == &__lockdep_no_track__))
+ return;
+
hlock = find_held_lock(curr, lock, depth, &i);
if (!hlock) {
print_lock_contention_bug(curr, lock, _RET_IP_);