+ maple_tree-stop-flooding-logs-when-debug_locks-is-set-to-zero-fix.patch added to mm-unstable branch

Andrew Morton <[email protected]> Tue, 28 Jul 2026 12:57:41 -0700
Newsgroups org.kernel.vger.mm-commits
Message-ID <[email protected]>
The patch titled
     Subject: maple_tree-stop-flooding-logs-when-debug_locks-is-set-to-zero-fix
has been added to the -mm mm-unstable branch.  Its filename is
     maple_tree-stop-flooding-logs-when-debug_locks-is-set-to-zero-fix.patch

This patch will shortly appear at
     https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/maple_tree-stop-flooding-logs-when-debug_locks-is-set-to-zero-fix.patch

This patch will later appear in the mm-unstable branch at
    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***

The -mm tree is included into linux-next via various
branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there most days

------------------------------------------------------
From: "Liam R. Howlett (Oracle)" <[email protected]>
Subject: maple_tree-stop-flooding-logs-when-debug_locks-is-set-to-zero-fix
Date: Mon, 20 Jul 2026 17:30:38 -0400

stop flooding logs when debug_locks is set to zero

When lockdep detects an issue, it sets debug_locks to 0 disabling further
reports.  The newly added maple tree sequence counting on locks to detect
errors is not taking this nor the fact that lock_is_held() can return -1
(unknown state) into account.  The resulting action is a flood of logging
of not matching sequence numbers being reported on failure.

__lock_sequnece() will return u32 ~0 when debug_locks is zero, and the
real sequnece count cannot return such a high value as it is less than
32bits.

By always updating the sequence number, regardless of lock state and by
ignoring ~0 value in the sequence number will avoid ever printing a
WARN_ON when this condition is hit.

Link: https://lore.kernel.org/fo5r2xl3fql6gyvjasfvfu4ftugjti2vxg7zskdw7hjeo3xvqm@kk66qmsf762s
Signed-off-by: Liam R. Howlett (Oracle) <[email protected]>
Tested-by: Breno Leitao <[email protected]>
Cc: Boqun Feng <[email protected]>
Cc: Chris Mason <[email protected]>
Cc: Chuck Lever <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jason Gunthorpe <[email protected]>
Cc: Joe Perches <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Rik van Riel <[email protected]>
Cc: Waiman Long <[email protected]>
Cc: Will Deacon <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

 lib/maple_tree.c |   14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

--- a/lib/maple_tree.c~maple_tree-stop-flooding-logs-when-debug_locks-is-set-to-zero-fix
+++ a/lib/maple_tree.c
@@ -1171,6 +1171,8 @@ static void mas_lock_check(struct ma_sta
 {
 #ifdef CONFIG_LOCKDEP
 	struct lockdep_map *map;
+	u32 seq;
+
 	if (!mas_is_active(mas))
 		return;
 
@@ -1182,8 +1184,12 @@ static void mas_lock_check(struct ma_sta
 #endif /* CONFIG_RCU_STRICT_GRACE_PERIOD */
 
 	map = mas_lockdep_map(mas);
-	if (map && lock_is_held(map))
-		WARN_ON_ONCE(mas->ld_seq != lock_sequence(map));
+	if (!map)
+		return;
+
+	seq = lock_sequence(map);
+	if (seq != UINT_MAX && mas->ld_seq != UINT_MAX)
+		WARN_ON_ONCE(mas->ld_seq != seq);
 #endif /* CONFIG_LOCKDEP */
 
 }
@@ -1201,8 +1207,8 @@ static void mas_init_lock_check(struct m
 #endif /* CONFIG_RCU_STRICT_GRACE_PERIOD */
 
 	map = mas_lockdep_map(mas);
-	if (map && lock_is_held(map))
-		mas->ld_seq = lock_sequence(mas_lockdep_map(mas));
+	if (map) /* Update regardless of lock state */
+		mas->ld_seq = lock_sequence(map);
 #endif /* CONFIG_LOCKDEP */
 
 }
_

Patches currently in -mm which might be from [email protected] are

maple_tree-add-rcu-locking-check-when-lockdep-is-enabled.patch
locking-lockdep-add-sequence-counter-to-held_lock.patch
maple_tree-add-write-lock-checking-with-lockdep-sequence-numbers.patch
maple_tree-stop-flooding-logs-when-debug_locks-is-set-to-zero-fix.patch
maple_tree-documentation-fix.patch
maple_tree-drop-dead-code-from-mas_extend_spanning_null.patch
maple_tree-drop-maple_alloc_slots.patch
maple_tree-clarify-comments-on-mas_nomem.patch
maple_tree-use-prefetched-value-in-mas_wr_store_type.patch
maple_tree-optimise-mas_wr_node_store-when-not-in-rcu-mode.patch
maple_tree-micro-optimisation-of-mas_wr_store_type.patch
maple_tree-add-bulk-parent-set-helper.patch
maple_tree-catch-race-in-mas_alloc_cyclic.patch
maple_tree-document-that-erase-may-use-gfp_kernel-for-allocations.patch
maple_tree-warn_on_once-when-allocations-fail.patch
maple_tree-document-erase-and-allocations-better.patch
maple_tree-change-two-gfp-flags-in-tests.patch
maple_tree-fix-argument-name-in-header.patch
maple_tree-avoid-extra-gap-calculation.patch
maple_tree-add-helper-mas_make_walkable.patch