From d8f504f271f669d65358ef0dbb22a02d4698820f Mon Sep 17 00:00:00 2001 From: Mikhail Zaslonko Date: Mon, 16 Sep 2024 18:24:01 +0200 Subject: [PATCH] zdump/dfi: Fix vm_info_get() check for non-VR kernel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the following kernel commit: "32db401965f1 s390/mm: Pin identity mapping base to zero" we can have zero identity_base value in os_info. This makes zgetdump check for non-VR kernel in vm_info_get() incorrect what leads to missing data (e.g. UTS kernel version) in 'zgetdump -i' output. Check for zero kaslr_offset value instead (like crash and makedumpfile do) in order to identify non-VR kernel. Signed-off-by: Mikhail Zaslonko Acked-by: Alexander Gordeev Signed-off-by: Jan Höppner --- zdump/dfi_vmcoreinfo.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zdump/dfi_vmcoreinfo.c b/zdump/dfi_vmcoreinfo.c index ea3e43f3..deab3e29 100644 --- a/zdump/dfi_vmcoreinfo.c +++ b/zdump/dfi_vmcoreinfo.c @@ -82,11 +82,11 @@ static struct vm_info *vm_info_get(void) util_log_print(UTIL_LOG_TRACE, "DFI read vm_info\n"); - vm_info.identity_base = l.os_info->entry[OS_INFO_IDENTITY_BASE].val; - if (vm_info.identity_base == 0) - return NULL; vm_info.kaslr_offset = l.os_info->entry[OS_INFO_KASLR_OFFSET].val; + if (vm_info.kaslr_offset == 0) + return NULL; vm_info.kaslr_offset_phys = l.os_info->entry[OS_INFO_KASLR_OFF_PHYS].val; + vm_info.identity_base = l.os_info->entry[OS_INFO_IDENTITY_BASE].val; vm_info.amode31_start = l.os_info->entry[OS_INFO_AMODE31_START].val; vm_info.amode31_end = l.os_info->entry[OS_INFO_AMODE31_END].val;