From 0d9ecd57e6872051c4b75e44541c2c539bf7815c0c40ffd849d44fb92573bcb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Tesa=C5=99=C3=ADk?= Date: Mon, 21 Mar 2022 11:37:34 +0000 Subject: [PATCH] Accepting request 963662 from home:ptesarik:branches:Kernel:kdump - makedumpfile-sadump-kaslr-fix-kaslr_offset-calculation.patch: sadump, kaslr: fix failure of calculating kaslr_offset (bsc#1196736). OBS-URL: https://build.opensuse.org/request/show/963662 OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/makedumpfile?expand=0&rev=162 --- ...p-kaslr-fix-kaslr_offset-calculation.patch | 47 +++++++++++++++++++ makedumpfile.changes | 7 +++ makedumpfile.spec | 2 + 3 files changed, 56 insertions(+) create mode 100644 makedumpfile-sadump-kaslr-fix-kaslr_offset-calculation.patch diff --git a/makedumpfile-sadump-kaslr-fix-kaslr_offset-calculation.patch b/makedumpfile-sadump-kaslr-fix-kaslr_offset-calculation.patch new file mode 100644 index 0000000..2916d4f --- /dev/null +++ b/makedumpfile-sadump-kaslr-fix-kaslr_offset-calculation.patch @@ -0,0 +1,47 @@ +From: HATAYAMA Daisuke +Date: Tue Jan 25 12:55:15 2022 +0000 +Subject: sadump, kaslr: fix failure of calculating kaslr_offset +References: bsc#1196736 +Upstream: merged +Git-commit: 59b1726fbcc251155140c8a1972384498fee4daf + +On kernels v5.8 or later, makedumpfile fails for memory dumps in the +sadump-related formats as follows: + + # makedumpfile -f -l -d 31 -x ./vmlinux /dev/sdd4 /root/vmcore-ld31 + __vtop4_x86_64: Can't get a valid pud_pte. + ...110 lines of the same message... + __vtop4_x86_64: Can't get a valid pud_pte. + calc_kaslr_offset: failed to calculate kaslr_offset and phys_base; default to 0 + readmem: type_addr: 1, addr:ffffffff85411858, size:8 + __vtop4_x86_64: Can't get pgd (page_dir:ffffffff85411858). + readmem: Can't convert a virtual address(ffffffff059be980) to physical address. + readmem: type_addr: 0, addr:ffffffff059be980, size:1024 + cpu_online_mask_init: Can't read cpu_online_mask memory. + + makedumpfile Failed. + +This is caused by the kernel commit 9d06c4027f21 ("x86/entry: Convert +Divide Error to IDTENTRY") that renamed divide_error to +asm_exc_divide_error, breaking logic for calculating kaslr offset. + +Fix this by adding initialization of asm_exc_divide_error. + +Signed-off-by: HATAYAMA Daisuke +Acked-by: Petr Tesarik + +--- + makedumpfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/makedumpfile.c ++++ b/makedumpfile.c +@@ -1634,6 +1634,8 @@ get_symbol_info(void) + SYMBOL_INIT(cur_cpu_spec, "cur_cpu_spec"); + + SYMBOL_INIT(divide_error, "divide_error"); ++ if (SYMBOL(divide_error) == NOT_FOUND_SYMBOL) ++ SYMBOL_INIT(divide_error, "asm_exc_divide_error"); + SYMBOL_INIT(idt_table, "idt_table"); + SYMBOL_INIT(saved_command_line, "saved_command_line"); + SYMBOL_INIT(pti_init, "pti_init"); diff --git a/makedumpfile.changes b/makedumpfile.changes index 4776511..ede308e 100644 --- a/makedumpfile.changes +++ b/makedumpfile.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Mar 21 11:22:52 UTC 2022 - Petr Tesařík + +- makedumpfile-sadump-kaslr-fix-kaslr_offset-calculation.patch: + sadump, kaslr: fix failure of calculating kaslr_offset + (bsc#1196736). + ------------------------------------------------------------------- Fri Feb 11 14:15:33 UTC 2022 - Petr Tesařík diff --git a/makedumpfile.spec b/makedumpfile.spec index e693412..91597db 100644 --- a/makedumpfile.spec +++ b/makedumpfile.spec @@ -51,6 +51,7 @@ Source99: %{name}-rpmlintrc Patch0: %{name}-override-libtinfo.patch Patch1: %{name}-ppc64-VA-range-SUSE.patch Patch2: %{name}-PN_XNUM.patch +Patch3: %{name}-sadump-kaslr-fix-kaslr_offset-calculation.patch BuildRequires: libbz2-devel BuildRequires: libdw-devel BuildRequires: libelf-devel @@ -79,6 +80,7 @@ via gdb or crash utility. %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 %build export CFLAGS="%{optflags} -fcommon"