Skip to content

Commit

Permalink
modpost: do not make find_tosym() return NULL
Browse files Browse the repository at this point in the history
As mentioned in commit 3975865 ("modpost: Add '.ltext' and
'.ltext.*' to TEXT_SECTIONS"), modpost can result in a segmentation
fault due to a NULL pointer dereference in default_mismatch_handler().

find_tosym() can return the original symbol pointer instead of NULL
if a better one is not found.

This fixes the reported segmentation fault.

Fixes: a23e758 ("modpost: unify 'sym' and 'to' in default_mismatch_handler()")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
  • Loading branch information
masahir0y committed Mar 28, 2024
1 parent 0316e4b commit 1102f9f
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions scripts/mod/modpost.c
Original file line number Diff line number Diff line change
Expand Up @@ -1007,6 +1007,8 @@ static Elf_Sym *find_fromsym(struct elf_info *elf, Elf_Addr addr,

static Elf_Sym *find_tosym(struct elf_info *elf, Elf_Addr addr, Elf_Sym *sym)
{
Elf_Sym *new_sym;

/* If the supplied symbol has a valid name, return it */
if (is_valid_name(elf, sym))
return sym;
Expand All @@ -1015,8 +1017,9 @@ static Elf_Sym *find_tosym(struct elf_info *elf, Elf_Addr addr, Elf_Sym *sym)
* Strive to find a better symbol name, but the resulting name may not
* match the symbol referenced in the original code.
*/
return symsearch_find_nearest(elf, addr, get_secindex(elf, sym),
true, 20);
new_sym = symsearch_find_nearest(elf, addr, get_secindex(elf, sym),
true, 20);
return new_sym ? new_sym : sym;
}

static bool is_executable_section(struct elf_info *elf, unsigned int secndx)
Expand Down

0 comments on commit 1102f9f

Please sign in to comment.