objtool fixes
Linus,
Please pull the latest core-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-urgent-for-linus
# HEAD: 22566c1603030f0a036ad564634b064ad1a55db2 objtool: Fix segfault in .cold detection with -ffunction-sections
Two fixes for boundary conditions.
Thanks,
Ingo
------------------>
Artem Savkov (2):
objtool: Fix double-free in .cold detection error path
objtool: Fix segfault in .cold detection with -ffunction-sections
tools/objtool/elf.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-)
tools/objtool/elf.c +15 -4
@@ -31,6 +31,8 @@#include "elf.h" #include "warn.h" +#define MAX_NAME_LEN 128 +struct section *find_section_by_name (struct elf *elf,const char *name) {struct section *sec;
@@ -298,6 +300,8 @@ static int read_symbols(struct elf *elf)/* Create parent/child links for any cold subfunctions */ list_for_each_entry (sec, &elf->sections, list) {list_for_each_entry (sym, &sec->symbol_list, list) { +char pname[MAX_NAME_LEN +1 ]; +size_t pnamelen;if (sym->type !=STT_FUNC )continue ; sym->pfunc = sym->cfunc = sym;
@@ -305,14 +309,21 @@ static int read_symbols(struct elf *elf)if (!coldstr)continue ; - coldstr[0 ] ='\0' ; - pfunc =find_symbol_by_name (elf, sym->name); - coldstr[0 ] ='.' ; + pnamelen = coldstr - sym->name; +if (pnamelen >MAX_NAME_LEN ) { +WARN ("%s(): parent function name exceeds maximum length of %d characters" , + sym->name,MAX_NAME_LEN ); +return -1 ; + } + +strncpy (pname, sym->name, pnamelen); + pname[pnamelen] ='\0' ; + pfunc =find_symbol_by_name (elf, pname);if (!pfunc) {WARN ("%s(): can't find parent function" , sym->name); - goto err; +return -1 ; } sym->pfunc = pfunc;
The pull request you sent on Fri, 30 Nov 2018 07:18:53 +0100:
The pull request you sent on Fri, 30 Nov 2018 07:18:53 +0100:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitcore-urgent-for-linus
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/575d7d0d6f5c6feb896fae2e70578a1ab6d474b5
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.wiki.kernel.org/userdoc/prtracker