• Mark Rutland's avatar
    arm64: kaslr: split kaslr/module initialization · 6e13b6b9
    Mark Rutland authored
    Currently kaslr_init() handles a mixture of detecting/announcing whether
    KASLR is enabled, and randomizing the module region depending on whether
    KASLR is enabled.
    
    To make it easier to rework the module region initialization, split the
    KASLR initialization into two steps:
    
    * kaslr_init() determines whether KASLR should be enabled, and announces
      this choice, recording this to a new global boolean variable. This is
      called from setup_arch() just before the existing call to
      kaslr_requires_kpti() so that this will always provide the expected
      result.
    
    * kaslr_module_init() randomizes the module region when required. This
      is called as a subsys_initcall, where we previously called
      kaslr_init().
    
    As a bonus, moving the KASLR reporting earlier makes it easier to spot
    and permits it to be logged via earlycon, making it easier to debug any
    issues that could be triggered by KASLR.
    
    Booting a v6.4-rc1 kernel with this patch applied, the log looks like:
    
    | EFI stub: Booting Linux Kernel...
    | EFI stub: Generating empty DTB
    | EFI stub: Exiting boot services...
    | [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x000f0510]
    | [    0.000000] Linux version 6.4.0-rc1-00006-g4763a8f8aeb3 (mark@lakrids) (aarch64-linux-gcc (GCC) 12.1.0, GNU ld (GNU Binutils) 2.38) #2 SMP PREEMPT Tue May  9 11:03:37 BST 2023
    | [    0.000000] KASLR enabled
    | [    0.000000] earlycon: pl11 at MMIO 0x0000000009000000 (options '')
    | [    0.000000] printk: bootconsole [pl11] enabled
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Tested-by: default avatarShanker Donthineni <sdonthineni@nvidia.com>
    Link: https://lore.kernel.org/r/20230530110328.2213762-4-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    6e13b6b9
setup.c 11.7 KB