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.

Signed-off-by: Ram Pai <[email protected]>
---
 arch/powerpc/mm/pkeys.c |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/mm/pkeys.c b/arch/powerpc/mm/pkeys.c
index 0facc0d..7dc0024 100644
--- 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));
-- 
1.7.1

Reply via email to