Messages in this thread | ![/](/images/icornerl.gif) | | From | Baoquan He <> | Subject | [PATCH v2 0/2] x86/boot/KASLR: Code bug fix about kernel virtual address randomization | Date | Tue, 27 Jun 2017 20:39:04 +0800 |
| |
People complained that crashkernel high doesn't work when kaslr code compiled in but add 'nokaslr' to diable it. Kexec has the same phenomenon.
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
| ![\](/images/icornerr.gif) |