On 6/2/24 1:38 AM, Suren Baghdasaryan wrote: > Memory allocation profiling is trying to register sysctl interface even > when CONFIG_SYSCTL=n, resulting in proc_do_static_key() being undefined. > Prevent that by skipping sysctl registration for such configurations. > > Fixes: 22d407b164ff ("lib: add allocation tagging support for memory allocation profiling") > Reported-by: kernel test robot <lkp@xxxxxxxxx> > Closes: https://lore.kernel.org/oe-kbuild-all/202405280616.wcOGWJEj-lkp@xxxxxxxxx/ > Signed-off-by: Suren Baghdasaryan <surenb@xxxxxxxxxx> > Cc: Kent Overstreet <kent.overstreet@xxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > --- > lib/alloc_tag.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/lib/alloc_tag.c b/lib/alloc_tag.c > index 11ed973ac359..c347b8b72d78 100644 > --- a/lib/alloc_tag.c > +++ b/lib/alloc_tag.c > @@ -227,6 +227,7 @@ struct page_ext_operations page_alloc_tagging_ops = { > }; > EXPORT_SYMBOL(page_alloc_tagging_ops); > > +#ifdef CONFIG_SYSCTL > static struct ctl_table memory_allocation_profiling_sysctls[] = { > { > .procname = "mem_profiling", > @@ -241,6 +242,17 @@ static struct ctl_table memory_allocation_profiling_sysctls[] = { > { } > }; > > +static void __init sysctl_init(void) > +{ > + if (!mem_profiling_support) > + memory_allocation_profiling_sysctls[0].mode = 0444; > + > + register_sysctl_init("vm", memory_allocation_profiling_sysctls); > +} > +#else /* CONFIG_SYSCTL */ > +static inline void sysctl_init(void) {} > +#endif /* CONFIG_SYSCTL */ > + > static int __init alloc_tag_init(void) > { > const struct codetag_type_desc desc = { > @@ -253,9 +265,7 @@ static int __init alloc_tag_init(void) > if (IS_ERR(alloc_tag_cttype)) > return PTR_ERR(alloc_tag_cttype); > > - if (!mem_profiling_support) > - memory_allocation_profiling_sysctls[0].mode = 0444; > - register_sysctl_init("vm", memory_allocation_profiling_sysctls); > + sysctl_init(); > procfs_init(); > > return 0; > > base-commit: 065d3634d60843b8e338d405b844cc7f2e5e1c66