[PATCH v2 1/3] makedumpfile: Get info->kernel_version from SYMBOL(init_uts_ns) earlier
Baoquan He
bhe at redhat.com
Thu Oct 6 02:50:06 PDT 2016
The current code assign value to info->kernel_version in check_release,
this is too late and buggy. Because in check_release(), it needs calling
readmem, however earlier get_value_for_old_linux depends on
info->kernel_version to get correct KERNEL_IMAGE_SIZE for MODULES_VADDR
which is used in is_vmalloc_addr_x86_64(). This looks a weird circle.
Since we have exported "OSRELEASE=%s\n" explicitly in kernel, we should
always use it to get kernel version. And this breaks above weird circle.
Otherwise MM randomization will come and make it worse.
Signed-off-by: Baoquan He <bhe at redhat.com>
---
makedumpfile.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/makedumpfile.c b/makedumpfile.c
index d168dfd..89e1089 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -1139,12 +1139,6 @@ check_release(void)
}
}
- info->kernel_version = get_kernel_version(info->system_utsname.release);
- if (info->kernel_version == FALSE) {
- ERRMSG("Can't get the kernel version.\n");
- return FALSE;
- }
-
return TRUE;
}
@@ -3832,6 +3826,12 @@ initial(void)
debug_info = TRUE;
}
+ info->kernel_version = get_kernel_version(info->release);
+ if (info->kernel_version == FALSE) {
+ ERRMSG("Can't get the kernel version.\n");
+ return FALSE;
+ }
+
if (!get_value_for_old_linux())
return FALSE;
--
2.5.5
More information about the kexec
mailing list