On 09/18/14 at 08:35am, Atsushi Kumagai wrote: > >diff --git a/makedumpfile.c b/makedumpfile.c > >index b4d43d8..48d73a8 100644 > >--- a/makedumpfile.c > >+++ b/makedumpfile.c > >@@ -1564,6 +1564,12 @@ 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) = MODULES_VADDR_ORIG; > >+ } > >+#endif > > This code looks wrong, the value of MODULES_VADDR will overflow as: > > MODULES_VADDR = __START_KERNEL_map + NUMBER(KERNEL_IMAGE_SIZE) > = 0xffffffff80000000 + 0xffffffff88000000 > > I think the code should be fixed as: > > makedumpfile.h: > #define __START_KERNEL_map (0xffffffff80000000) > #define KERNEL_IMAGE_SIZE_ORIG (0x0000000008000000) /* 2.6.25, or former */ > #define KERNEL_IMAGE_SIZE_2_6_26 (0x0000000020000000) /* 2.6.26, or later */ > #define MODULES_VADDR (__START_KERNEL_map + NUMBER(KERNEL_IMAGE_SIZE)) > > makedumpfile.c: > 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; > } > > > Thanks > Atsushi Kumagai Hi Atsushi, This is the definition of KERNEL_IMAGE_SIZE in arch/x86/include/asm/page_64_types.h. It's not 0xffffffff88000000. KERNEL_IMAGE_SIZE is a size value. #define KERNEL_IMAGE_SIZE_DEFAULT (512 * 1024 * 1024) #if defined(CONFIG_RANDOMIZE_BASE) && \ CONFIG_RANDOMIZE_BASE_MAX_OFFSET > KERNEL_IMAGE_SIZE_DEFAULT #define KERNEL_IMAGE_SIZE CONFIG_RANDOMIZE_BASE_MAX_OFFSET #else #define KERNEL_IMAGE_SIZE KERNEL_IMAGE_SIZE_DEFAULT #endif Thanks Baoquan