| From de113256f8c1c24d8c79ae388bf2a5abd70f7577 Mon Sep 17 00:00:00 2001 |
| From: Ram Pai <linuxram@us.ibm.com> |
| Date: Tue, 17 Jul 2018 06:51:03 -0700 |
| Subject: powerpc/pkeys: Deny read/write/execute by default |
| |
| From: Ram Pai <linuxram@us.ibm.com> |
| |
| commit de113256f8c1c24d8c79ae388bf2a5abd70f7577 upstream. |
| |
| Deny all permissions on all keys, with some exceptions. pkey-0 must |
| allow all permissions, or else everything comes to a screaching halt. |
| Execute-only key must allow execute permission. |
| |
| Fixes: cf43d3b26452 ("powerpc: Enable pkey subsystem") |
| Cc: stable@vger.kernel.org # v4.16+ |
| Signed-off-by: Ram Pai <linuxram@us.ibm.com> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/mm/pkeys.c | 8 +++----- |
| 1 file changed, 3 insertions(+), 5 deletions(-) |
| |
| --- a/arch/powerpc/mm/pkeys.c |
| +++ b/arch/powerpc/mm/pkeys.c |
| @@ -124,12 +124,10 @@ int pkey_initialize(void) |
| |
| /* register mask is in BE format */ |
| pkey_amr_mask = ~0x0ul; |
| - pkey_iamr_mask = ~0x0ul; |
| + pkey_amr_mask &= ~(0x3ul << pkeyshift(0)); |
| |
| - for (i = 0; i < (pkeys_total - os_reserved); i++) { |
| - pkey_amr_mask &= ~(0x3ul << pkeyshift(i)); |
| - pkey_iamr_mask &= ~(0x1ul << pkeyshift(i)); |
| - } |
| + pkey_iamr_mask = ~0x0ul; |
| + pkey_iamr_mask &= ~(0x3ul << pkeyshift(0)); |
| |
| pkey_uamor_mask = ~0x0ul; |
| pkey_uamor_mask &= ~(0x3ul << pkeyshift(0)); |