>On 09/24/14 at 07:55am, Atsushi Kumagai wrote: >> >diff --git a/makedumpfile.c b/makedumpfile.c >> >index b4d43d8..65c893f 100644 >> >--- a/makedumpfile.c >> >+++ b/makedumpfile.c >> >@@ -1564,6 +1564,14 @@ get_value_for_old_linux(void) >> > NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE) = >> > PAGE_BUDDY_MAPCOUNT_VALUE_v2_6_39_to_latest_version; >> > } >> >+#ifdef __x86_64__ >> >+ if (NUMBER(KERNEL_IMAGE_SIZE) == NOT_FOUND_NUMBER) { >> >+ if (info->kernel_version < KERNEL_VERSION(2, 6, 26)) >> >+ NUMBER(KERNEL_IMAGE_SIZE) = KERNEL_IMAGE_SIZE_ORIG; >> >+ else >> >+ NUMBER(KERNEL_IMAGE_SIZE) = KERNEL_IMAGE_SIZE_2_6_26; >> >+ } >> >+#endif I noticed that this fix is incomplete because get_value_for_old_linux() is too late as shown below: initial() + read_vmcoreinfo_from_vmcore() // get KERNEL_IMAGE_SIZE from VMCOREINFO (only for new kernels) + get_mem_map() // refer KERNEL_IMAGE_SIZE via is_vmalloc_addr_x86_64() + get_value_for_old_linux() // initialize KERNEL_IMAGE_SIZE for old kernels So I'll fix this issue with the patch below. Thanks, Atsushi Kumagai From: Atsushi Kumagai <kumagai-atsushi@xxxxxxxxxxxxxxxxx> Date: Mon, 20 Oct 2014 16:04:57 +0900 Subject: [PATCH] Initialize symbols early for old kernels. It's best to invoke get_value_for_old_linux() immediately after reading VMCOREINFO since some functions require the symbols which are initialized in it. This change is safe because get_value_for_old_linux() doesn't overwrite any values. Signed-off-by: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp> --- makedumpfile.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/makedumpfile.c b/makedumpfile.c index 53c3585..b27ea1e 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -3203,6 +3203,9 @@ initial(void) debug_info = TRUE; } + if (!get_value_for_old_linux()) + return FALSE; + out: if (!info->page_size) { /* @@ -3306,9 +3309,6 @@ out: return FALSE; } - if (!get_value_for_old_linux()) - return FALSE; - /* use buddy identification of free pages whether cyclic or not */ /* (this can reduce pages scan of 1TB memory from 60sec to 30sec) */ if (info->dump_level & DL_EXCLUDE_FREE) -- 1.9.0