Skip to content
  • Ard Biesheuvel's avatar
    arm64: kaslr: keep modules close to the kernel when DYNAMIC_FTRACE=y · 8fe88a41
    Ard Biesheuvel authored
    
    
    The RANDOMIZE_MODULE_REGION_FULL Kconfig option allows KASLR to be
    configured in such a way that kernel modules and the core kernel are
    allocated completely independently, which implies that modules are likely
    to require branches via PLT entries to reach the core kernel. The dynamic
    ftrace code does not expect that, and assumes that it can patch module
    code to perform a relative branch to anywhere in the core kernel. This
    may result in errors such as
    
      branch_imm_common: offset out of range
      ------------[ cut here ]------------
      WARNING: CPU: 3 PID: 196 at kernel/trace/ftrace.c:1995 ftrace_bug+0x220/0x2e8
      Modules linked in:
    
      CPU: 3 PID: 196 Comm: systemd-udevd Not tainted 4.8.0-22-generic #24
      Hardware name: AMD Seattle/Seattle, BIOS 10:34:40 Oct  6 2016
      task: ffff8d1bef7dde80 task.stack: ffff8d1bef6b0000
      PC is at ftrace_bug+0x220/0x2e8
      LR is at ftrace_process_locs+0x330/0x430
    
    So make RANDOMIZE_MODULE_REGION_FULL mutually exclusive with DYNAMIC_FTRACE
    at the Kconfig level.
    
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    8fe88a41