diff --git a/0021-Fix-warning-about-kernel-version-inconsistency-durin.patch b/0021-Fix-warning-about-kernel-version-inconsistency-durin.patch new file mode 100644 index 0000000..1113439 --- /dev/null +++ b/0021-Fix-warning-about-kernel-version-inconsistency-durin.patch @@ -0,0 +1,49 @@ +From aa5763800d614ff6080fd1909517a3939c250e86 Mon Sep 17 00:00:00 2001 +From: Lianbo Jiang +Date: Fri, 21 Jul 2023 12:36:18 +0800 +Subject: [PATCH 1/2] Fix warning about kernel version inconsistency during + crash startup + +Currently, the symbol ".rodata" may not be found in some vmlinux, and +the strings command will still be used to get the linux banner string, +but this gets two strings as below: + + # strings vmlinux | grep "Linux version" + Linux version 6.5.0-0.rc2.17.fc39.x86_64 ... GNU ld version 2.40-9.fc39) # SMP PREEMPT_DYNAMIC + Linux version 6.5.0-0.rc2.17.fc39.x86_64 ... GNU ld version 2.40-9.fc39) #1 SMP PREEMPT_DYNAMIC Mon Jul 17 14:57:35 UTC 2023 + +In the verify_namelist(), the while-loop will only determine if the +first linux banner string above matches and break the loop. But actually +the second string above is correct one. Eventually, crash starts up with +the following warning: + + # ./crash -s vmlinux vmcore + WARNING: kernel version inconsistency between vmlinux and dumpfile + + # ./crash -s + WARNING: kernel version inconsistency between vmlinux and live memory + +Let's always try to match the correct one, otherwise still prints a +warning as before. + +Signed-off-by: Lianbo Jiang +--- + kernel.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/kernel.c b/kernel.c +index 546eed95eebd..9801812387bd 100644 +--- a/kernel.c ++++ b/kernel.c +@@ -1375,8 +1375,6 @@ verify_namelist() + buffer3[i++] = *p1++; + buffer3[i] = NULLCHAR; + } +- +- break; + } + pclose(pipe); + +-- +2.37.1 + diff --git a/0022-Fix-get_linux_banner_from_vmlinux-for-vmlinux-withou.patch b/0022-Fix-get_linux_banner_from_vmlinux-for-vmlinux-withou.patch new file mode 100644 index 0000000..5d43445 --- /dev/null +++ b/0022-Fix-get_linux_banner_from_vmlinux-for-vmlinux-withou.patch @@ -0,0 +1,49 @@ +From c74f375e0ef7cd9b593fa1d73c47505822c8f2a0 Mon Sep 17 00:00:00 2001 +From: Kazuhito Hagio +Date: Mon, 24 Jul 2023 17:25:12 +0900 +Subject: [PATCH 2/2] Fix get_linux_banner_from_vmlinux() for vmlinux without + ".rodata" symbol + +As written in the previous patch, some recent kernels do not have the +".rodata" symbol. As a result, the get_linux_banner_from_vmlinux() +returns FALSE and the slower fallback routine is used. + +Use "__start_rodata" symbol if the ".rodata" symbol is not available. + +Signed-off-by: Kazuhito Hagio +Signed-off-by: Lianbo Jiang +--- + kernel.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/kernel.c b/kernel.c +index 9801812387bd..2114700eecc8 100644 +--- a/kernel.c ++++ b/kernel.c +@@ -11891,8 +11891,13 @@ int get_linux_banner_from_vmlinux(char *buf, size_t size) + { + struct bfd_section *sect; + long offset; ++ ulong start_rodata; + +- if (!kernel_symbol_exists(".rodata")) ++ if (kernel_symbol_exists(".rodata")) ++ start_rodata = symbol_value(".rodata"); ++ else if (kernel_symbol_exists("__start_rodata")) ++ start_rodata = symbol_value("__start_rodata"); ++ else + return FALSE; + + sect = bfd_get_section_by_name(st->bfd, ".rodata"); +@@ -11905,7 +11910,7 @@ int get_linux_banner_from_vmlinux(char *buf, size_t size) + * value in vmlinux file, but relative offset to linux_banner + * object in .rodata section is idential. + */ +- offset = symbol_value("linux_banner") - symbol_value(".rodata"); ++ offset = symbol_value("linux_banner") - start_rodata; + + if (!bfd_get_section_contents(st->bfd, + sect, +-- +2.37.1 + diff --git a/crash.spec b/crash.spec index 715c677..bea6c36 100644 --- a/crash.spec +++ b/crash.spec @@ -39,6 +39,8 @@ Patch18: 0017-vmware-Improve-output-when-we-fail-to-read-vmware-vm.patch Patch19: 0018-Exclude-zero-entries-from-do_maple_tree-return-value.patch Patch20: 0019-Fix-irq-a-s-options-on-Linux-6.5-rc1-and-later.patch Patch21: 0020-Fix-segmentation-fault-by-tree-s-option-with-Maple-T.patch +Patch22: 0021-Fix-warning-about-kernel-version-inconsistency-durin.patch +Patch23: 0022-Fix-get_linux_banner_from_vmlinux-for-vmlinux-withou.patch %description The core analysis suite is a self-contained tool that can be used to @@ -80,6 +82,8 @@ offered by Mission Critical Linux, or the LKCD kernel patch. %patch19 -p1 %patch20 -p1 %patch21 -p1 +%patch22 -p1 +%patch23 -p1 %build