On Tue, Jun 19, 2018 at 10:40:13PM +1000, Michael Ellerman wrote: > Ram Pai <linux...@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: sta...@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?
No. Good to add. Can this be different patch? However we do not have any systems with less than 16keys AFAICT. RP