[PATCH] crash: Use '?' for kernel module symbols type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We are using ELFXX_sym->st_info directly as the 'type' of symbol,
which is wrong, because st_info contains numeric value which needs
to be mapped to appropriate type character. Sections headers are
also required to correctly map st_info to symbol type which are
missing here (lm->mod_section_data is NULL). Use '?' for now. This
fixes 'trace' extension which segfaults internally while parsing
module kallsyms:

Before patch:
  crash> trace show
  crash>

After patch:
  crash> trace show
  cpus=4
    <idle>-0  [002]  4350.912553: function: __hrtimer_get_next_event <-- hrtime
    <idle>-0  [002]  4350.912553: function: __hrtimer_next_event_base <-- __hrt

Signed-off-by: Ravi Bangoria <ravi.bangoria@xxxxxxxxxxxxx>
---
 symbols.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/symbols.c b/symbols.c
index e73e735..4456cd3 100644
--- a/symbols.c
+++ b/symbols.c
@@ -2188,7 +2188,12 @@ Elf32_Sym_to_common(Elf32_Sym *e32, struct elf_common *ec)
 	ec->st_name = (ulong)e32->st_name;
 	ec->st_value = (ulong)e32->st_value;
 	ec->st_shndx = (ulong)e32->st_shndx;
-	ec->st_info = e32->st_info;
+	/*
+	 * Section headers are required to correctly map st_info
+	 * to symbol type, which are missing here. Let's use '?'
+	 * for all kernel module symbols type.
+	 */
+	ec->st_info = '?';
 	ec->st_size = (ulong)e32->st_size;
 }
 
@@ -2198,7 +2203,12 @@ Elf64_Sym_to_common(Elf64_Sym *e64, struct elf_common *ec)
 	ec->st_name = (ulong)e64->st_name;
 	ec->st_value = (ulong)e64->st_value;
 	ec->st_shndx = (ulong)e64->st_shndx;
-	ec->st_info = e64->st_info;
+	/*
+	 * Section headers are required to correctly map st_info
+	 * to symbol type, which are missing here. Let's use '?'
+	 * for all kernel module symbols type.
+	 */
+	ec->st_info = '?';
 	ec->st_size = (ulong)e64->st_size;
 }
 
-- 
1.8.3.1

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility



[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux