diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-11-24 01:04:30 +0900 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-11-25 21:00:33 +0900 |
commit | 21915eca088dc271c970e8351290e83d938114ac (patch) | |
tree | f0310de5a5911d4373276c7e001a9a54cf13f6ac /scripts/kallsyms.c | |
parent | 1ef26b7c948128dc9240939da06690bfd90f4607 (diff) | |
download | linux-21915eca088dc271c970e8351290e83d938114ac.tar.gz linux-21915eca088dc271c970e8351290e83d938114ac.tar.bz2 linux-21915eca088dc271c970e8351290e83d938114ac.zip |
scripts/kallsyms: fix definitely-lost memory leak
build_initial_tok_table() overwrites unused sym_entry to shrink the
table size. Before the entry is overwritten, table[i].sym must be freed
since it is malloc'ed data.
This fixes the 'definitely lost' report from valgrind. I ran valgrind
against x86_64_defconfig of v5.4-rc8 kernel, and here is the summary:
[Before the fix]
LEAK SUMMARY:
definitely lost: 53,184 bytes in 2,874 blocks
[After the fix]
LEAK SUMMARY:
definitely lost: 0 bytes in 0 blocks
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'scripts/kallsyms.c')
-rw-r--r-- | scripts/kallsyms.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 918c2ba071b5..79641874d860 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -487,6 +487,8 @@ static void build_initial_tok_table(void) table[pos] = table[i]; learn_symbol(table[pos].sym, table[pos].len); pos++; + } else { + free(table[i].sym); } } table_cnt = pos; |