• Ard Biesheuvel's avatar
    arm64: omit [_text, _stext) from permanent kernel mapping · e2a073dd
    Ard Biesheuvel authored
    In a previous patch, we increased the size of the EFI PE/COFF header
    to 64 KB, which resulted in the _stext symbol to appear at a fixed
    offset of 64 KB into the image.
    
    Since 64 KB is also the largest page size we support, this completely
    removes the need to map the first 64 KB of the kernel image, given that
    it only contains the arm64 Image header and the EFI header, neither of
    which we ever access again after booting the kernel. More importantly,
    we should avoid an executable mapping of non-executable and not entirely
    predictable data, to deal with the unlikely event that we inadvertently
    emitted something that looks like an opcode that could be used as a
    gadget for speculative execution.
    
    So let's limit the kernel mapping of .text to the [_stext, _etext)
    region, which matches the view of generic code (such as kallsyms) when
    it reasons about the boundaries of the kernel's .text section.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Acked-by: default avatarWill Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20201117124729.12642-2-ardb@kernel.orgSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    e2a073dd
init.c 15.1 KB