summaryrefslogtreecommitdiffstats
path: root/scripts/kallsyms.c
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2019-11-24 01:04:30 +0900
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-01-04 19:13:09 +0100
commite9bcb9247208dda1f231a3e27fe3fabc07dc9ee9 (patch)
tree0d8f82b3463bcff453043c499091ca5033687c7a /scripts/kallsyms.c
parent79a1eae9e433357390c03ed3ed57037d88a73554 (diff)
downloadlinux-stable-e9bcb9247208dda1f231a3e27fe3fabc07dc9ee9.tar.gz
linux-stable-e9bcb9247208dda1f231a3e27fe3fabc07dc9ee9.tar.bz2
linux-stable-e9bcb9247208dda1f231a3e27fe3fabc07dc9ee9.zip
scripts/kallsyms: fix definitely-lost memory leak
[ Upstream commit 21915eca088dc271c970e8351290e83d938114ac ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'scripts/kallsyms.c')
-rw-r--r--scripts/kallsyms.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
index 31ed7f3f0e15..4b2711c23f4e 100644
--- a/scripts/kallsyms.c
+++ b/scripts/kallsyms.c
@@ -491,6 +491,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;