Thread (26 messages) 26 messages, 7 authors, 2021-02-04

Re: [PATCH] btf_encoder: Add extra checks for symbol names

From: Tom Stellard <hidden>
Date: 2021-01-21 17:40:24

On 1/21/21 5:38 AM, Arnaldo Carvalho de Melo wrote:
Em Tue, Jan 12, 2021 at 04:27:59PM -0800, Tom Stellard escreveu:
quoted
On 1/12/21 10:40 AM, Jiri Olsa wrote:
quoted
When processing kernel image build by clang we can
find some functions without the name, which causes
pahole to segfault.

Adding extra checks to make sure we always have
function's name defined before using it.
I backported this patch to pahole 1.19, and I can confirm it fixes the
segfault for me.
I'm applying v2 for this patch and based on your above statement I'm
adding a:

Tested-by: Tom Stellard <redacted>

Ok?
Yes, this is fine.  I also backported the v2 patch and tested it and it
fixed the issue.

-Tom
Who originally reported this?

- Arnaldo
  
quoted
-Tom
quoted
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
   btf_encoder.c | 8 ++++++--
   1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/btf_encoder.c b/btf_encoder.c
index 333973054b61..17f7a14f2ef0 100644
--- a/btf_encoder.c
+++ b/btf_encoder.c
@@ -72,6 +72,8 @@ static int collect_function(struct btf_elf *btfe, GElf_Sym *sym)
   	if (elf_sym__type(sym) != STT_FUNC)
   		return 0;
+	if (!elf_sym__name(sym, btfe->symtab))
+		return 0;
   	if (functions_cnt == functions_alloc) {
   		functions_alloc = max(1000, functions_alloc * 3 / 2);
@@ -730,9 +732,11 @@ int cu__encode_btf(struct cu *cu, int verbose, bool force,
   		if (!has_arg_names(cu, &fn->proto))
   			continue;
   		if (functions_cnt) {
-			struct elf_function *func;
+			const char *name = function__name(fn, cu);
+			struct elf_function *func = NULL;
-			func = find_function(btfe, function__name(fn, cu));
+			if (name)
+				func = find_function(btfe, name);
   			if (!func || func->generated)
   				continue;
   			func->generated = true;
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help