On Mon, Sep 14, 2026 at 11:13:32PM -0400, Yury Norov wrote: > DEFINE_CTL_TABLE_POLL() statically initializes an embedded wait queue. > An automatic local poll object cannot provide the persistent lockdep > class key expected by its wait queue lock. > > Add ASSERT_STATIC_STORAGE() to reject automatic declarations while > preserving file-scope and static local definitions. Leave the underlying > initializer available for embedded objects. > > Assisted-by: OpenAI Codex > Signed-off-by: Yury Norov <[email protected]> > --- > include/linux/sysctl.h | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h > index e5d7226ab6f5..be79359346af 100644 > --- a/include/linux/sysctl.h > +++ b/include/linux/sysctl.h > @@ -22,6 +22,7 @@ > #ifndef _LINUX_SYSCTL_H > #define _LINUX_SYSCTL_H > > +#include <linux/compiler.h> > #include <linux/list.h> > #include <linux/rcupdate.h> > #include <linux/wait.h> > @@ -216,7 +217,8 @@ static inline void *proc_sys_poll_event(struct > ctl_table_poll *poll) > .wait = __WAIT_QUEUE_HEAD_INITIALIZER(name.wait) } > > #define DEFINE_CTL_TABLE_POLL(name) \ > - struct ctl_table_poll name = __CTL_TABLE_POLL_INITIALIZER(name) > + struct ctl_table_poll name = __CTL_TABLE_POLL_INITIALIZER(name); > \ > + ASSERT_STATIC_STORAGE(name) > > /* A sysctl table is an array of struct ctl_table: */ > struct ctl_table { > -- > 2.53.0 >
This looks OK for sysctl and the two users of DEFINE_CTL_TABLE_POLL in utsname_sysctl.c (hostname_poll and domainname_poll) Reviewed-by: Joel Granados <[email protected]> Best
signature.asc
Description: PGP signature
