]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/mm: Support execute-only memory on the Radix MMU
authorRussell Currey <ruscur@russell.cc>
Wed, 17 Aug 2022 05:06:39 +0000 (15:06 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 26 Aug 2022 01:02:21 +0000 (11:02 +1000)
commit1ae105b49f87850e7dc2a523c83a87d258e5c09e
tree0f89fab1ff3beb9a5cf0b48931604f84f7c62b66
parent18b400c068faf9ea68146b48dda571bd4ff07573
powerpc/mm: Support execute-only memory on the Radix MMU

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: Russell Currey <ruscur@russell.cc>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220817050640.406017-1-ruscur@russell.cc
arch/powerpc/include/asm/book3s/64/pgtable.h
arch/powerpc/mm/book3s64/pgtable.c
arch/powerpc/mm/fault.c