From: Yury Norov <ynorov@nvidia.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
"Andrew Lunn" <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Matthew Wilcox" <willy@infradead.org>,
"Ingo Molnar" <mingo@redhat.com>, "Will Deacon" <will@kernel.org>,
"Boqun Feng" <boqun@kernel.org>,
"Waiman Long" <longman@redhat.com>,
"Dennis Zhou" <dennis@kernel.org>, "Tejun Heo" <tj@kernel.org>,
"Christoph Lameter" <cl@gentwo.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
"Frederic Weisbecker" <frederic@kernel.org>,
"Neeraj Upadhyay" <neeraj.upadhyay@kernel.org>,
"Joel Fernandes" <joelagnelf@nvidia.com>,
"Josh Triplett" <josh@joshtriplett.org>,
"Uladzislau Rezki" <urezki@gmail.com>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
"Lai Jiangshan" <jiangshanlai@gmail.com>,
Zqiang <qiang.zhang@linux.dev>, "Onur Özkan" <work@onurozkan.dev>,
"Kees Cook" <kees@kernel.org>,
"Joel Granados" <joel.granados@kernel.org>,
"Anna-Maria Behnsen" <anna-maria@linutronix.de>,
"Thomas Gleixner" <tglx@kernel.org>,
"Juri Lelli" <juri.lelli@redhat.com>,
"Vincent Guittot" <vincent.guittot@linaro.org>,
"Dietmar Eggemann" <dietmar.eggemann@arm.com>,
"Ben Segall" <bsegall@google.com>, "Mel Gorman" <mgorman@suse.de>,
"Valentin Schneider" <vschneid@redhat.com>,
"K Prateek Nayak" <kprateek.nayak@amd.com>,
"Mike Rapoport" <rppt@kernel.org>,
"Liam R. Howlett" <liam@infradead.org>,
"Lorenzo Stoakes" <ljs@kernel.org>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Jann Horn" <jannh@google.com>,
"Pedro Falcato" <pfalcato@suse.de>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowangio@gmail.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"Sebastian Andrzej Siewior" <bigeasy@linutronix.de>,
"Clark Williams" <clrkwllms@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
wireguard@lists.zx2c4.com, netdev@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
rcu@vger.kernel.org, virtualization@lists.linux.dev,
linux-rt-devel@lists.linux.dev, llvm@lists.linux.dev,
"Yury Norov" <yury.norov@gmail.com>
Subject: Re: [PATCH 01/17] locking/mutex: assert static storage for DEFINE_MUTEX()
Date: Tue, 15 Sep 2026 11:54:53 -0400 [thread overview]
Message-ID: <aqlqTdtXWTFZTgjV@yury> (raw)
In-Reply-To: <20260915082300.GV4121339@noisy.programming.kicks-ass.net>
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:
> > 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 <ynorov@nvidia.com>
> > ---
> > 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.
>
> > 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/
Check the cover letter for more details.
next prev parent reply other threads:[~2026-09-15 15:55 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 3:03 [PATCH 00/17] Treewide: enforce static storage for object initializers Yury Norov
2026-09-15 3:03 ` [PATCH 01/17] locking/mutex: assert static storage for DEFINE_MUTEX() Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 8:23 ` Peter Zijlstra
2026-09-15 15:54 ` Yury Norov [this message]
2026-09-15 3:03 ` [PATCH 02/17] locking/rtmutex: assert static storage for DEFINE_RT_MUTEX() Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 3:03 ` [PATCH 03/17] locking/rwsem: assert static storage for semaphore definitions Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-15 3:03 ` [PATCH 04/17] locking/semaphore: assert static storage for DEFINE_SEMAPHORE() Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-15 3:03 ` [PATCH 05/17] locking/seqlock: assert static storage for DEFINE_SEQLOCK() Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 06/17] sched: assert static storage for wait queue and completion declarations Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 07/17] xarray: assert static storage for DEFINE_XARRAY_FLAGS() Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 08/17] idr: enforce the static-storage contract of DEFINE_IDR() Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 09/17] radix-tree: require static storage for RADIX_TREE() Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 10/17] klist: assert static storage for DEFINE_KLIST() Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 11/17] workqueue: assert static storage for work declarations Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 12/17] timers: assert static storage for DEFINE_TIMER() Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-29 18:50 ` Thomas Gleixner
2026-09-15 3:13 ` [PATCH 13/17] kthread: assert static storage for delayed work declarations Yury Norov
2026-09-15 3:25 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 14/17] ratelimit: assert static storage for DEFINE_RATELIMIT_STATE() Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 15/17] notifier: assert static storage for locking notifier heads Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-15 3:13 ` [PATCH 16/17] rcu: assert static storage for RCU sync and SRCU definitions Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-10-07 18:41 ` Joel Fernandes
2026-10-07 18:48 ` Yury Norov
2026-10-07 18:58 ` Joel Fernandes
2026-09-15 3:13 ` [PATCH 17/17] sysctl: assert static storage for DEFINE_CTL_TABLE_POLL() Yury Norov
2026-09-15 3:26 ` sashiko-bot
2026-09-18 7:21 ` Joel Granados
2026-09-15 6:14 ` [PATCH 00/17] Treewide: enforce static storage for object initializers Andrew Morton
2026-09-15 9:24 ` David Laight
2026-09-15 15:53 ` Yury Norov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aqlqTdtXWTFZTgjV@yury \
--to=ynorov@nvidia.com \
--cc=Jason@zx2c4.com \
--cc=akpm@linux-foundation.org \
--cc=andrew+netdev@lunn.ch \
--cc=anna-maria@linutronix.de \
--cc=bigeasy@linutronix.de \
--cc=boqun@kernel.org \
--cc=bsegall@google.com \
--cc=cl@gentwo.org \
--cc=clrkwllms@kernel.org \
--cc=davem@davemloft.net \
--cc=dennis@kernel.org \
--cc=dietmar.eggemann@arm.com \
--cc=edumazet@google.com \
--cc=eperezma@redhat.com \
--cc=frederic@kernel.org \
--cc=jannh@google.com \
--cc=jasowangio@gmail.com \
--cc=jiangshanlai@gmail.com \
--cc=joel.granados@kernel.org \
--cc=joelagnelf@nvidia.com \
--cc=josh@joshtriplett.org \
--cc=juri.lelli@redhat.com \
--cc=justinstitt@google.com \
--cc=kees@kernel.org \
--cc=kprateek.nayak@amd.com \
--cc=kuba@kernel.org \
--cc=liam@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-rt-devel@lists.linux.dev \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=ljs@kernel.org \
--cc=llvm@lists.linux.dev \
--cc=longman@redhat.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=morbo@google.com \
--cc=mst@redhat.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=neeraj.upadhyay@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=pfalcato@suse.de \
--cc=qiang.zhang@linux.dev \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=rppt@kernel.org \
--cc=tglx@kernel.org \
--cc=tj@kernel.org \
--cc=urezki@gmail.com \
--cc=vbabka@kernel.org \
--cc=vincent.guittot@linaro.org \
--cc=virtualization@lists.linux.dev \
--cc=vschneid@redhat.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=wireguard@lists.zx2c4.com \
--cc=work@onurozkan.dev \
--cc=xuanzhuo@linux.alibaba.com \
--cc=yury.norov@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.