• Gerald Schaefer's avatar
    s390/kaslr: store KASLR offset for early dumps · a9f2f686
    Gerald Schaefer authored
    The KASLR offset is added to vmcoreinfo in arch_crash_save_vmcoreinfo(),
    so that it can be found by crash when processing kernel dumps.
    
    However, arch_crash_save_vmcoreinfo() is called during a subsys_initcall,
    so if the kernel crashes before that, we have no vmcoreinfo and no KASLR
    offset.
    
    Fix this by storing the KASLR offset in the lowcore, where the vmcore_info
    pointer will be stored, and where it can be found by crash. In order to
    make it distinguishable from a real vmcore_info pointer, mark it as uneven
    (KASLR offset itself is aligned to THREAD_SIZE).
    
    When arch_crash_save_vmcoreinfo() stores the real vmcore_info pointer in
    the lowcore, it overwrites the KASLR offset. At that point, the KASLR
    offset is not yet added to vmcoreinfo, so we also need to move the
    mem_assign_absolute() behind the vmcoreinfo_append_str().
    
    Fixes: b2d24b97 ("s390/kernel: add support for kernel address space layout randomization (KASLR)")
    Cc: <stable@vger.kernel.org> # v5.2+
    Signed-off-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    a9f2f686
machine_kexec.c 7.49 KB