Re: [PATCH v2 0/2] x86/boot/KASLR: Code bug fix about kernel virtual address randomization

From: Dave Young
Date: Fri Jun 30 2017 - 02:14:45 EST


On 06/27/17 at 08:39pm, Baoquan He wrote:
> People complained that crashkernel high doesn't work when kaslr code
> compiled in but add 'nokaslr' to diable it. Kexec has the same
> phenomenon.

This is a regression, with 4.12* kernel kexec reboot fails always on
my desktop pc now without kaslr being enabled.

>
> The root cause is a code bug which assigned the original loading address
> of kernel to the local variable 'virt_addr' which represents the offset
> of kernel virtual address randmoization. As we know, kernel can be loaded
> to anywhere under 64T physically, this wrong assignment could cause kernel
> relocation handling of x86 64 error if no kaslr is taken.
>
> The v1 post can be found here:
> x86/boot/KASLR: Skip relocation handling in no kaslr case
> https://patchwork.kernel.org/patch/9807789/
>
> In v2, Ingo suggested that we should add a judgement to check if 'virt_addr'
> is randomized to make kernel beyond the kernel mapping area. This checking
> can let us know the error but not reset to firmware quietly as it does now.
>
> Baoquan He (2):
> x86/boot/KASLR: Add checking for the offset of kernel virtual address
> randomization
> x86/boot/KASLR: Fix the wrong assignment to 'virt_addr'
>
> arch/x86/boot/compressed/kaslr.c | 3 ---
> arch/x86/boot/compressed/misc.c | 6 ++++--
> arch/x86/boot/compressed/misc.h | 2 --
> 3 files changed, 4 insertions(+), 7 deletions(-)
>
> --
> 2.5.5
>