• Russell Currey's avatar
    powerpc/mm: Support execute-only memory on the Radix MMU · 395cac77
    Russell Currey authored
    
    
    Add support for execute-only memory (XOM) for the Radix MMU by using an
    execute-only mapping, as opposed to the RX mapping used by powerpc's
    other MMUs.
    
    The Hash MMU already supports XOM through the execute-only pkey,
    which is a separate mechanism shared with x86.  A PROT_EXEC-only mapping
    will map to RX, and then the pkey will be applied on top of it.
    
    mmap() and mprotect() consumers in userspace should observe the same
    behaviour on Hash and Radix despite the differences in implementation.
    
    Replacing the vma_is_accessible() check in access_error() with a read
    check should be functionally equivalent for non-Radix MMUs, since it
    follows write and execute checks.  For Radix, the change enables
    detecting faults on execute-only mappings where vma_is_accessible() would
    return true.
    Signed-off-by: default avatarRussell Currey <ruscur@russell.cc>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220817050640.406017-1-ruscur@russell.cc
    395cac77
pgtable.c 15.3 KB