On Sun, Nov 26, 2023 at 4:19 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > Commit f50169324df4 ("module.h: split out the EXPORT_SYMBOL into > export.h") appropriately separated EXPORT_SYMBOL into <linux/export.h> > because modules and EXPORT_SYMBOL are orthogonal; modules are symbol > consumers, while EXPORT_SYMBOL are used by symbol providers, which > may not be necessarily a module. > > However, that commit also relocated THIS_MODULE. As explained in the > commit description, the intention was to define THIS_MODULE in a > lightweight header, but I do not believe <linux/export.h> was the > suitable location because EXPORT_SYMBOL and THIS_MODULE are unrelated. > > Move it to another lightweight header, <linux/init.h>. The reason for > choosing <linux/init.h> is to make <linux/moduleparam.h> self-contained > without relying on <linux/linkage.h> incorrectly including > <linux/export.h>. > > With this adjustment, the role of <linux/export.h> becomes clearer as > it only defines EXPORT_SYMBOL. > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- Applied to kbuild. I did not get any report from the 0day bot so far, but I hope it will get a little more compile tests before getting into linux-next. > > include/linux/export.h | 18 ------------------ > include/linux/init.h | 7 +++++++ > 2 files changed, 7 insertions(+), 18 deletions(-) > > diff --git a/include/linux/export.h b/include/linux/export.h > index 9911508a9604..0bbd02fd351d 100644 > --- a/include/linux/export.h > +++ b/include/linux/export.h > @@ -6,15 +6,6 @@ > #include <linux/linkage.h> > #include <linux/stringify.h> > > -/* > - * Export symbols from the kernel to modules. Forked from module.h > - * to reduce the amount of pointless cruft we feed to gcc when only > - * exporting a simple symbol or two. > - * > - * Try not to add #includes here. It slows compilation and makes kernel > - * hackers place grumpy comments in header files. > - */ > - > /* > * This comment block is used by fixdep. Please do not remove. > * > @@ -23,15 +14,6 @@ > * side effect of the *.o build rule. > */ > > -#ifndef __ASSEMBLY__ > -#ifdef MODULE > -extern struct module __this_module; > -#define THIS_MODULE (&__this_module) > -#else > -#define THIS_MODULE ((struct module *)0) > -#endif > -#endif /* __ASSEMBLY__ */ > - > #ifdef CONFIG_64BIT > #define __EXPORT_SYMBOL_REF(sym) \ > .balign 8 ASM_NL \ > diff --git a/include/linux/init.h b/include/linux/init.h > index 01b52c9c7526..3fa3f6241350 100644 > --- a/include/linux/init.h > +++ b/include/linux/init.h > @@ -179,6 +179,13 @@ extern void (*late_time_init)(void); > > extern bool initcall_debug; > > +#ifdef MODULE > +extern struct module __this_module; > +#define THIS_MODULE (&__this_module) > +#else > +#define THIS_MODULE ((struct module *)0) > +#endif > + > #endif > > #ifndef MODULE > -- > 2.40.1 > -- Best Regards Masahiro Yamada