mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
objtool/klp: Fix create_fake_symbols() skipping entsize-based sections
create_fake_symbols() has two phases: creating symbols from
ANNOTATE_DATA_SPECIAL entries, and a fallback that uses sh_entsize for
special sections like .static_call_sites.
When .discard.annotate_data is absent, the function returns early,
skipping the entsize fallback and silently allowing unsupported
module-local static call keys through.
Fix it by jumping to the entsize phase instead of returning early.
Fixes: dd590d4d57 ("objtool/klp: Introduce klp diff subcommand for diffing object files")
Assisted-by: Claude:claude-4-opus
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Acked-by: Song Liu <song@kernel.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
This commit is contained in:
parent
e872b3f139
commit
3de711fba7
|
|
@ -1374,7 +1374,7 @@ static int create_fake_symbols(struct elf *elf)
|
|||
|
||||
sec = find_section_by_name(elf, ".discard.annotate_data");
|
||||
if (!sec || !sec->rsec)
|
||||
return 0;
|
||||
goto entsize;
|
||||
|
||||
for_each_reloc(sec->rsec, reloc) {
|
||||
unsigned long offset, size;
|
||||
|
|
@ -1406,7 +1406,7 @@ static int create_fake_symbols(struct elf *elf)
|
|||
/*
|
||||
* 2) Make symbols for sh_entsize, and simple arrays of pointers:
|
||||
*/
|
||||
|
||||
entsize:
|
||||
for_each_sec(elf, sec) {
|
||||
unsigned int entry_size;
|
||||
unsigned long offset;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user