mirror of
https://github.com/torvalds/linux
synced 2024-10-07 03:42:55 +00:00
modpost: do not make find_tosym() return NULL
As mentioned in commit397586506c
("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:a23e7584ec
("modpost: unify 'sym' and 'to' in default_mismatch_handler()") Reported-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
parent
0316e4b04e
commit
1102f9f85b
|
@ -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)
|
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 the supplied symbol has a valid name, return it */
|
||||||
if (is_valid_name(elf, sym))
|
if (is_valid_name(elf, sym))
|
||||||
return sym;
|
return sym;
|
||||||
|
@ -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
|
* Strive to find a better symbol name, but the resulting name may not
|
||||||
* match the symbol referenced in the original code.
|
* match the symbol referenced in the original code.
|
||||||
*/
|
*/
|
||||||
return symsearch_find_nearest(elf, addr, get_secindex(elf, sym),
|
new_sym = symsearch_find_nearest(elf, addr, get_secindex(elf, sym),
|
||||||
true, 20);
|
true, 20);
|
||||||
|
return new_sym ? new_sym : sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool is_executable_section(struct elf_info *elf, unsigned int secndx)
|
static bool is_executable_section(struct elf_info *elf, unsigned int secndx)
|
||||||
|
|
Loading…
Reference in a new issue