Re: [PATCH 0/2] Determine kernel text mapping size at runtime for x86_64
From: Kees Cook
Date: Thu Dec 08 2016 - 13:32:28 EST
On Wed, Dec 7, 2016 at 11:56 PM, Baoquan He <bhe@xxxxxxxxxx> wrote:
> Dave Anderson ever told in Crash utility he makes judgement whether it's
> a kaslr kernel by size of KERNEL_IMAGE_SIZE. As long as it's 1G, it's
> recognized as kaslr. Then the current upstream kernel has a wrong behaviour,
> it sets KERNEL_IMAGE_SIZE as 1G as long as CONFIG_RANDOMIZE_BASE is enabled,
> though people specify "nokaslr" into cmdline to disable kaslr explicitly.
I'm not sure that's the correct solution to the Crash utility -- the
kaslr-ness of a kernel should be already exposed in the dump with the
kaslr_enabled variable yes?
> So in this patchset, made changes to determine the size of kernel text mapping
> area at runtime. If "nokaslr" specified, kernel mapping size is 512M though
> CONFIG_RANDOMIZE_BASE is enabled.
This seems to make the non-KASLR case more consistent, so I'm fine
with the idea. Once the build-bots are happy with everything, consider
the series:
Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>
Thanks!
-Kees
>
> Baoquan He (2):
> x86/64: Make kernel text mapping always take one whole page table in
> early boot code
> x86/KASLR/64: Determine kernel text mapping size at runtime
>
> arch/x86/boot/compressed/kaslr.c | 15 ++++++++++-----
> arch/x86/include/asm/kaslr.h | 1 +
> arch/x86/include/asm/page_64_types.h | 20 ++++++++++++--------
> arch/x86/include/asm/pgtable_64_types.h | 2 +-
> arch/x86/kernel/head64.c | 11 ++++++-----
> arch/x86/kernel/head_64.S | 16 +++++++++-------
> arch/x86/mm/dump_pagetables.c | 3 ++-
> arch/x86/mm/init_64.c | 2 +-
> arch/x86/mm/physaddr.c | 6 +++---
> 9 files changed, 45 insertions(+), 31 deletions(-)
>
> --
> 2.5.5
>
--
Kees Cook
Nexus Security