[PATCH v2 4/6] powerpc/pkeys: Preallocate execute-only key

Michael Ellerman mpe at ellerman.id.au
Tue Jun 19 22:40:13 AEST 2018


Ram Pai <linuxram at us.ibm.com> writes:

> execute-only key is allocated dynamically. This is a problem.  When a
> thread implicitly creates a execute-only key, and resets UAMOR for that
> key, the UAMOR value does not percolate to all the other threads.  Any
> other thread may ignorantly change the permissions on the key.  This can
> cause the key to be not execute-only for that thread.
>
> Preallocate the execute-only key and ensure that no thread can change
> the permission of the key, by resetting the corresponding bit in UAMOR.

OK this is a non-ABI changing bug fix AFAICS.

I'll add:

  Fixes: 5586cf61e108 ("powerpc: introduce execute-only pkey")
  Cc: stable at vger.kernel.org # v4.16+

> diff --git a/arch/powerpc/mm/pkeys.c b/arch/powerpc/mm/pkeys.c
> index b681bec..1f2389f 100644
> --- a/arch/powerpc/mm/pkeys.c
> +++ b/arch/powerpc/mm/pkeys.c
> @@ -25,6 +25,7 @@
>  #define IAMR_EX_BIT 0x1UL
>  #define PKEY_REG_BITS (sizeof(u64)*8)
>  #define pkeyshift(pkey) (PKEY_REG_BITS - ((pkey+1) * AMR_BITS_PER_PKEY))
> +#define EXECUTE_ONLY_KEY 2

Do we ensure we have at least 3 keys anywhere?

cheers


More information about the Linuxppc-dev mailing list