>> 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;
>>      }
>
>Well, I got what you mean. The reason I did that is because before
>kaslr is introduced 0xffffffff88000000 is always correct. Since if
>kernel location is usually 16M and no one put it any other places. And
>since kernel image is not greater than 128M up to now, it's always
>correct even though later kernel image size is increased to 512M. I
>wanted to use that.

Thanks, I understand your thoughts.

>Now you are suggesting to make it clear what the size it truly is in
>kernel. That's also good. I can repost it with your suggestion.

I still prefer my idea, I would like to wait for your repost.


Thanks
Atsushi Kumagai

>Thanks
>Baoquan
>
>>
>>
>> Thanks
>> Atsushi Kumagai
>>
>> >    if (SIZE(pageflags) == NOT_FOUND_STRUCTURE) {
>> >            if (info->kernel_version >= KERNEL_VERSION(2, 6, 27))
>> >                    SIZE(pageflags) =
>> >@@ -1813,6 +1819,7 @@ write_vmcoreinfo_data(void)
>> >    WRITE_NUMBER("PG_hwpoison", PG_hwpoison);
>> >
>> >    WRITE_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE);
>> >+   WRITE_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
>> >
>> >    /*
>> >     * write the source file of 1st kernel
>> >@@ -2147,6 +2154,7 @@ read_vmcoreinfo(void)
>> >    READ_SRCFILE("pud_t", pud_t);
>> >
>> >    READ_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE);
>> >+   READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
>> >
>> >    return TRUE;
>> > }
>> >diff --git a/makedumpfile.h b/makedumpfile.h
>> >index 6493f61..28a3cac 100644
>> >--- a/makedumpfile.h
>> >+++ b/makedumpfile.h
>> >@@ -549,7 +549,8 @@ do { \
>> > #define VMEMMAP_END_2_6_31 (0xffffeaffffffffff) /* 2.6.31, or later  */
>> >
>> > #define __START_KERNEL_map (0xffffffff80000000)
>> >-#define MODULES_VADDR              (0xffffffff88000000)
>> >+#define MODULES_VADDR_ORIG (0xffffffff88000000)
>> >+#define MODULES_VADDR          (__START_KERNEL_map + 
>> >NUMBER(KERNEL_IMAGE_SIZE))
>> > #define MODULES_END                (0xfffffffffff00000)
>> > #define KVBASE                     PAGE_OFFSET
>> > #define _SECTION_SIZE_BITS (27)
>> >@@ -1531,6 +1532,7 @@ struct number_table {
>> >    long    PG_hwpoison;
>> >
>> >    long    PAGE_BUDDY_MAPCOUNT_VALUE;
>> >+   long    KERNEL_IMAGE_SIZE;
>> >    long    SECTION_SIZE_BITS;
>> >    long    MAX_PHYSMEM_BITS;
>> > };
>> >--
>> >1.8.5.3
>>

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to