aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJosh Poimboeuf <jpoimboe@kernel.org>2025-03-24 14:55:56 -0700
committerIngo Molnar <mingo@kernel.org>2025-03-25 09:20:26 +0100
commit4fab2d7628dd38f3fa8a5e615199350ecaeb17a8 (patch)
treeb5e9f992ce2a4d2b60cf3169c2607590ec1f2cd1
parentobjtool: Fix CONFIG_OBJTOOL_WERROR for vmlinux.o (diff)
downloadwireguard-linux-4fab2d7628dd38f3fa8a5e615199350ecaeb17a8.tar.xz
wireguard-linux-4fab2d7628dd38f3fa8a5e615199350ecaeb17a8.zip
objtool: Fix init_module() handling
If IBT is enabled and a module uses the deprecated init_module() magic function name rather than module_init(fn), its ENDBR will get removed, causing an IBT failure during module load. Objtool does print an obscure warning, but then does nothing to either correct it or return an error. Improve the usefulness of the warning and return an error so it will at least fail the build with CONFIG_OBJTOOL_WERROR. Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/366bfdbe92736cde9fb01d5d3eb9b98e9070a1ec.1742852846.git.jpoimboe@kernel.org
-rw-r--r--tools/objtool/check.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index b2f6a7ff77b5..2f7aff1c367d 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -828,8 +828,11 @@ static int create_ibt_endbr_seal_sections(struct objtool_file *file)
if (opts.module && sym && sym->type == STT_FUNC &&
insn->offset == sym->offset &&
(!strcmp(sym->name, "init_module") ||
- !strcmp(sym->name, "cleanup_module")))
- WARN("%s(): not an indirect call target", sym->name);
+ !strcmp(sym->name, "cleanup_module"))) {
+ WARN("%s(): Magic init_module() function name is deprecated, use module_init(fn) instead",
+ sym->name);
+ return -1;
+ }
if (!elf_init_reloc_text_sym(file->elf, sec,
idx * sizeof(int), idx,