mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
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
This commit is contained in:
committed by
Ingo Molnar
parent
4759670bc3
commit
4fab2d7628
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user