• Ard Biesheuvel's avatar
    arm64: Avoid #define'ing PTE_MAYBE_NG to 0x0 for asm use · 60d043c1
    Ard Biesheuvel authored
    The PROT_* macros resolve to expressions that are only valid in C and
    not in assembler, and so they are only usable from C code. Currently, we
    make an exception for the permission indirection init code in proc.S,
    which doesn't care about the bits that are conditionally set, and so we
    just #define PTE_MAYBE_NG to 0x0 for any assembler file that includes
    these definitions.
    
    This is dodgy because this means that PROT_NORMAL and friends is
    generally available in asm code, but defined in a way that deviates from
    the definition that C code will observe, which might lead to hard to
    diagnose issues down the road.
    
    So instead, #define PTE_MAYBE_NG only in the place where the PIE
    constants are evaluated, and #undef it again right after. This allows us
    to drop the #define from pgtable-prot.h, and avoid the risk of deviating
    definitions between asm and C.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20240214122845.2033971-72-ardb+git@google.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    60d043c1
pgtable-prot.h 6.77 KB