Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

authored by

Josh Poimboeuf and committed by
Ingo Molnar
4fab2d76 4759670b

+5 -2
+5 -2
tools/objtool/check.c
··· 828 828 if (opts.module && sym && sym->type == STT_FUNC && 829 829 insn->offset == sym->offset && 830 830 (!strcmp(sym->name, "init_module") || 831 - !strcmp(sym->name, "cleanup_module"))) 832 - WARN("%s(): not an indirect call target", sym->name); 831 + !strcmp(sym->name, "cleanup_module"))) { 832 + WARN("%s(): Magic init_module() function name is deprecated, use module_init(fn) instead", 833 + sym->name); 834 + return -1; 835 + } 833 836 834 837 if (!elf_init_reloc_text_sym(file->elf, sec, 835 838 idx * sizeof(int), idx,