mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-01-01 13:58:06 +00:00
Command "pahole --btf_features=default -J" will segmentation fault when kernel-dbg package is also installed. $pahole --btf_features=default -J pahole[599]: segfault at 8 ip 00007f7c92d819e2 sp 00007f7c799febe0 error 6 in libdwarves.so.1.0.0[189e2,7f7c92d72000+1c000] likely on CPU 0 (core 0, socket 0) Code: 74 19 ff ff 48 39 dd 75 ef 4c 89 ef e8 67 19 ff ff 49 8b 7c 24 18 e8 8d 13 ff ff 49 8b 14 24 49 8b 44 24 08 4c 89 e7 45 31 e4 <48> 89 42 08 48 89 10 e8 42 19 ff ff e9 30 ff ff ff e8 58 0a ff ff Segmentation fault (core dumped) Signed-off-by: Changqing Li <changqing.li@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
From 6fa2b7de3e647e64c5d693aea7f3bacbfa964f53 Mon Sep 17 00:00:00 2001
|
|
From: Ihor Solodari <ihor.solodrai@linux.dev>
|
|
Date: Wed, 20 Aug 2025 09:00:03 +0100
|
|
Subject: [PATCH] btf_encoder: Fix elf_functions cleanup on error
|
|
|
|
When elf_functions__new() errors out and jumps to
|
|
elf_functions__delete(), pahole segfaults on attempt to list_del() the
|
|
elf_functions instance from a list, to which it was never added.
|
|
|
|
Fix this by moving list_del() call out of elf_functions__delete().
|
|
Remove from the list only on normal cleanup in
|
|
elf_functions_list__clear().
|
|
|
|
v1:
|
|
https://lore.kernel.org/dwarves/979a1ac4-21d3-4384-8ce4-d10f41887088@linux.dev/
|
|
|
|
Closes:
|
|
https://lore.kernel.org/dwarves/24bcc853-533c-42ab-bc37-0c13e0baa217@windriver.com/
|
|
Reported-by: Changqing Li <changqing.li@windriver.com>
|
|
Signed-off-by: Ihor Solodrai <ihor.solodrai@linux.dev>
|
|
Reviewed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
Link: https://lore.kernel.org/dwarves/acef4a0e-7d3b-4e05-b3ca-1007580f2754@linux.dev/
|
|
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
|
|
|
|
Upstream-Status: Backport [https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?h=next&id=fe6738f4b46b63dcdc5b15b252a014b3eaba16a4]
|
|
|
|
Signed-off-by: Changqing Li <changqing.li@windriver.com>
|
|
---
|
|
btf_encoder.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/btf_encoder.c b/btf_encoder.c
|
|
index 511c1ea..2f8c6bb 100644
|
|
--- a/btf_encoder.c
|
|
+++ b/btf_encoder.c
|
|
@@ -162,7 +162,6 @@ static inline void elf_functions__delete(struct elf_functions *funcs)
|
|
free(funcs->entries[i].alias);
|
|
free(funcs->entries);
|
|
elf_symtab__delete(funcs->symtab);
|
|
- list_del(&funcs->node);
|
|
free(funcs);
|
|
}
|
|
|
|
@@ -204,6 +203,7 @@ static inline void elf_functions_list__clear(struct list_head *elf_functions_lis
|
|
|
|
list_for_each_safe(pos, tmp, elf_functions_list) {
|
|
funcs = list_entry(pos, struct elf_functions, node);
|
|
+ list_del(&funcs->node);
|
|
elf_functions__delete(funcs);
|
|
}
|
|
}
|
|
--
|
|
2.34.1
|
|
|