• Yuntao Wang's avatar
    kexec_core: fix the assignment to kimage->control_page · 2861b377
    Yuntao Wang authored
    image->control_page represents the starting address for allocating the
    next control page, while hole_end represents the address of the last valid
    byte of the currently allocated control page.
    
    This bug actually does not affect the correctness of allocating control
    pages, because image->control_page is currently only used in
    kimage_alloc_crash_control_pages(), and this function, when allocating
    control pages, will first align image->control_page up to the nearest
    `(1 << order) << PAGE_SHIFT` boundary, then use this value as the
    starting address of the next control page.  This ensures that the newly
    allocated control page will use the correct starting address and not
    overlap with previously allocated control pages.
    
    Although it does not affect the correctness of the final result, it is
    better for us to set image->control_page to the correct value, in case
    it might be used elsewhere in the future, potentially causing errors.
    
    Therefore, after successfully allocating a control page,
    image->control_page should be updated to `hole_end + 1`, rather than
    hole_end.
    
    Link: https://lkml.kernel.org/r/20231221042308.11076-1-ytcoode@gmail.com
    
    Signed-off-by: default avatarYuntao Wang <ytcoode@gmail.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    2861b377
kexec_core.c 32.6 KB