On Wed, Jul 15, 2020 at 05:39:39PM +0900, Masami Hiramatsu wrote: > On Wed, 15 Jul 2020 01:32:28 +0300 > Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx> wrote: > > > Add wrappers to take the modules "big lock" in order to encapsulate > > conditional compilation (CONFIG_MODULES) inside the wrapper. > > > > Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> > > Suggested-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx> > > --- > > include/linux/module.h | 15 ++++++++++ > > kernel/kprobes.c | 4 +-- > > kernel/livepatch/core.c | 8 ++--- > > kernel/module.c | 60 ++++++++++++++++++------------------- > > kernel/trace/trace_kprobe.c | 4 +-- > > 5 files changed, 53 insertions(+), 38 deletions(-) > > > > diff --git a/include/linux/module.h b/include/linux/module.h > > index 2e6670860d27..857b84bf9e90 100644 > > --- a/include/linux/module.h > > +++ b/include/linux/module.h > > @@ -902,4 +902,19 @@ static inline bool module_sig_ok(struct module *module) > > } > > #endif /* CONFIG_MODULE_SIG */ > > > > +#ifdef CONFIG_MODULES > > +static inline void lock_modules(void) > > +{ > > + mutex_lock(&module_mutex); > > +} > > + > > +static inline void unlock_modules(void) > > +{ > > + mutex_unlock(&module_mutex); > > +} > > +#else > > +static inline void lock_modules(void) { } > > +static inline void unlock_modules(void) { } > > +#endif > > You don't need to add new #ifdefs. There is a room for dummy prototypes > for !CONFIG_MODULES already in modules.h. > > ----- > struct notifier_block; > > #ifdef CONFIG_MODULES > > extern int modules_disabled; /* for sysctl */ > > ... > #else /* !CONFIG_MODULES... */ > > static inline struct module *__module_address(unsigned long addr) > { > ----- > > So you can just put those inlines in the appropriate places ;) > > Thank you, Rrright. /Jarkko