module: add helper function for reading module_buildid()

Add a helper function for reading the optional "build_id" member of struct
module.  It is going to be used also in ftrace_mod_address_lookup().

Use "#ifdef" instead of "#if IS_ENABLED()" to match the declaration of the
optional field in struct module.

Link: https://lkml.kernel.org/r/20251128135920.217303-4-pmladek@suse.com
Signed-off-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Daniel Gomez <da.gomez@samsung.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Cc: Aaron Tomlin <atomlin@atomlin.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkman <daniel@iogearbox.net>
Cc: John Fastabend <john.fastabend@gmail.com>
Cc: Kees Cook <kees@kernel.org>
Cc: Luis Chamberalin <mcgrof@kernel.org>
Cc: Marc Rutland <mark.rutland@arm.com>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Sami Tolvanen <samitolvanen@google.com>
Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Petr Mladek 2025-11-28 14:59:16 +01:00 committed by Andrew Morton
parent fda024fb64
commit acfdbb4ab2
2 changed files with 11 additions and 7 deletions

View file

@ -748,6 +748,15 @@ static inline void __module_get(struct module *module)
__mod ? __mod->name : "kernel"; \
})
static inline const unsigned char *module_buildid(struct module *mod)
{
#ifdef CONFIG_STACKTRACE_BUILD_ID
return mod->build_id;
#else
return NULL;
#endif
}
/* Dereference module function descriptor */
void *dereference_module_function_descriptor(struct module *mod, void *ptr);

View file

@ -334,13 +334,8 @@ int module_address_lookup(unsigned long addr,
if (mod) {
if (modname)
*modname = mod->name;
if (modbuildid) {
#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID)
*modbuildid = mod->build_id;
#else
*modbuildid = NULL;
#endif
}
if (modbuildid)
*modbuildid = module_buildid(mod);
sym = find_kallsyms_symbol(mod, addr, size, offset);