summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBalbir Singh2017-06-28 19:04:11 +0200
committerMichael Ellerman2017-07-04 03:37:44 +0200
commit1e0fc9d1eb2b0241a03e0a02bcdb9b5b641b9d35 (patch)
tree30c28bcf67a505c954c6e28bef10ded1f4ae0d39
parentpowerpc/mm/radix: Implement STRICT_RWX/mark_rodata_ro() for Radix (diff)
downloadkernel-qcow2-linux-1e0fc9d1eb2b0241a03e0a02bcdb9b5b641b9d35.tar.gz
kernel-qcow2-linux-1e0fc9d1eb2b0241a03e0a02bcdb9b5b641b9d35.tar.xz
kernel-qcow2-linux-1e0fc9d1eb2b0241a03e0a02bcdb9b5b641b9d35.zip
powerpc/Kconfig: Enable STRICT_KERNEL_RWX for some configs
All code that patches kernel text has been moved over to using patch_instruction() and patch_instruction() is able to cope with the kernel text being read only. The linker script has been updated to ensure the read only data ends on a large page boundary, so it and the preceding kernel text can be marked R_X. We also have implementations of mark_rodata_ro() for Hash and Radix MMU modes. There are some corner-cases missing when the kernel is built relocatable, so for now make it depend on !RELOCATABLE. There's also a temporary workaround to depend on !HIBERNATION to avoid a build failure, that will be removed once we've merged with the PM tree. Signed-off-by: Balbir Singh <bsingharora@gmail.com> [mpe: Make it depend on !RELOCATABLE, munge change log] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/Kconfig2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 5ef763853876..8998eefe1638 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -164,6 +164,8 @@ config PPC
select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
select HAVE_ARCH_SECCOMP_FILTER
select HAVE_ARCH_TRACEHOOK
+ select ARCH_HAS_STRICT_KERNEL_RWX if (PPC_BOOK3S_64 && !RELOCATABLE && !HIBERNATION)
+ select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
select HAVE_CBPF_JIT if !PPC64
select HAVE_CONTEXT_TRACKING if PPC64
select HAVE_DEBUG_KMEMLEAK