maple_tree: relax lockdep checks for on-stack trees
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 14 Jul 2023 19:55:49 +0000 (15:55 -0400)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 18 Aug 2023 17:12:39 +0000 (10:12 -0700)
To support early release of the maple tree locks, do not lockdep check the
lock if it is set to NULL.  This is intended for the special case on-stack
use of tracking entries and not for general use.

Link: https://lkml.kernel.org/r/20230714195551.894800-3-Liam.Howlett@oracle.com
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oliver Sang <oliver.sang@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/maple_tree.h

index 7769270b85e89ea62d292b4015781f8e6379c6e5..6618c151288676e94585ceaedc004ba422c27fa0 100644 (file)
@@ -182,7 +182,9 @@ enum maple_type {
 
 #ifdef CONFIG_LOCKDEP
 typedef struct lockdep_map *lockdep_map_p;
-#define mt_lock_is_held(mt)    lock_is_held(mt->ma_external_lock)
+#define mt_lock_is_held(mt)                                             \
+       (!(mt)->ma_external_lock || lock_is_held((mt)->ma_external_lock))
+
 #define mt_set_external_lock(mt, lock)                                 \
        (mt)->ma_external_lock = &(lock)->dep_map
 #else