diff options
author | Christophe Leroy <christophe.leroy@c-s.fr> | 2019-03-11 08:30:34 +0000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2019-04-21 23:11:46 +1000 |
commit | 2679f9bd0abafb3044bcbaac0600b32159ac8bf2 (patch) | |
tree | 77543dc9837adb96bd9bd4ee3465015a47c08029 /arch/powerpc/include/asm/kup.h | |
parent | powerpc/8xx: Add Kernel Userspace Execution Prevention (diff) | |
download | linux-dev-2679f9bd0abafb3044bcbaac0600b32159ac8bf2.tar.xz linux-dev-2679f9bd0abafb3044bcbaac0600b32159ac8bf2.zip |
powerpc/8xx: Add Kernel Userspace Access Protection
This patch adds Kernel Userspace Access Protection on the 8xx.
When a page is RO or RW, it is set RO or RW for Key 0 and NA
for Key 1.
Up to now, the User group is defined with Key 0 for both User and
Supervisor.
By changing the group to Key 0 for User and Key 1 for Supervisor,
this patch prevents the Kernel from being able to access user data.
At exception entry, the kernel saves SPRN_MD_AP in the regs struct,
and reapply the protection. At exception exit it restores SPRN_MD_AP
with the value saved on exception entry.
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
[mpe: Drop allow_read/write_to/from_user() as they're now in kup.h]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm/kup.h')
-rw-r--r-- | arch/powerpc/include/asm/kup.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/kup.h b/arch/powerpc/include/asm/kup.h index 7d8ad3d6729d..043c800ec5fb 100644 --- a/arch/powerpc/include/asm/kup.h +++ b/arch/powerpc/include/asm/kup.h @@ -5,6 +5,9 @@ #ifdef CONFIG_PPC64 #include <asm/book3s/64/kup-radix.h> #endif +#ifdef CONFIG_PPC_8xx +#include <asm/nohash/32/kup-8xx.h> +#endif #ifdef __ASSEMBLY__ #ifndef CONFIG_PPC_KUAP |