Thread (25 messages) 25 messages, 6 authors, 4d ago

Re: [PATCH 01/17] locking/mutex: assert static storage for DEFINE_MUTEX()

From: Yury Norov <hidden>
Date: 2026-09-15 15:55:09
Also in: linux-fsdevel, linux-mm, linux-rt-devel, lkml, llvm, netdev, rcu, virtualization

On Tue, Sep 15, 2026 at 10:23:00AM +0200, Peter Zijlstra wrote:
On Mon, Sep 14, 2026 at 11:03:19PM -0400, Yury Norov wrote:
quoted
DEFINE_MUTEX() uses a static lock initializer whose lockdep class key
requires a persistent object address. Reject automatic local declarations
with ASSERT_STATIC_STORAGE(), in both the regular and PREEMPT_RT variants.
Align the VMA and memblock tools stubs with the kernel declaration.

The two automatic mutexes in the WireGuard allowedips selftests already
call mutex_init(). Replace their redundant static initializers with plain
struct mutex declarations.

Assisted-by: OpenAI Codex
Signed-off-by: Yury Norov <redacted>
---
 drivers/net/wireguard/selftest/allowedips.c | 4 ++--
 include/linux/mutex.h                       | 7 +++++--
 tools/testing/memblock/linux/mutex.h        | 8 ++++++--
 tools/testing/vma/include/dup.h             | 5 ++++-
 4 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireguard/selftest/allowedips.c b/drivers/net/wireguard/selftest/allowedips.c
index 3e857e6fb627..ecb2908228e7 100644
--- a/drivers/net/wireguard/selftest/allowedips.c
+++ b/drivers/net/wireguard/selftest/allowedips.c
@@ -257,7 +257,7 @@ static __init bool randomized_test(void)
 	u8 ip[16], mutate_mask[16], mutated[16];
 	struct wg_peer **peers, *peer;
 	struct horrible_allowedips h;
-	DEFINE_MUTEX(mutex);
+	struct mutex mutex;
 	struct allowedips t;
 	bool ret = false;
 
@@ -499,7 +499,7 @@ bool __init wg_allowedips_selftest(void)
 	struct allowedips_node *iter_node;
 	bool success = false;
 	struct allowedips t;
-	DEFINE_MUTEX(mutex);
+	struct mutex mutex;
 	struct in6_addr ip;
 	size_t i = 0, count = 0;
 	__be64 part;
This should probably be a separate patch.
quoted
diff --git a/include/linux/mutex.h b/include/linux/mutex.h
index 734048c02f4f..2f2d95f3097c 100644
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
@@ -11,6 +11,7 @@
 #ifndef __LINUX_MUTEX_H
 #define __LINUX_MUTEX_H
 
+#include <linux/compiler.h>
 #include <asm/current.h>
 #include <linux/list.h>
 #include <linux/spinlock_types.h>
@@ -84,7 +85,8 @@ do {									\
 		__DEP_MAP_MUTEX_INITIALIZER(lockname) }
 
 #define DEFINE_MUTEX(mutexname) \
-	struct mutex mutexname = __MUTEX_INITIALIZER(mutexname)
+	struct mutex mutexname = __MUTEX_INITIALIZER(mutexname);	\
+	ASSERT_STATIC_STORAGE(mutexname)
My tree no has ASSERT_STATIC_STORAGE. Please repost when that lands?
It's on top of:

https://lore.kernel.org/all/20260911221444.1523311-1-ynorov@nvidia.com/ (local)

Check the cover letter for more details.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help