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

Michael Ellerman mpe at ellerman.id.au
Thu Jun 21 10:28:31 AEST 2018


Ram Pai <linuxram at us.ibm.com> writes:
> On Tue, Jun 19, 2018 at 10:40:13PM +1000, Michael Ellerman wrote:
>> 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?
>
> No. Good to add. Can this be different patch?

Yes please.

> However we do not have any systems with less than 16keys AFAICT.

It's controllable by firmware so we have between 0 and ∞ keys :)

But yeah you're right it's unlikely to be a bug anyone hits in practice.

cheers


More information about the Linuxppc-dev mailing list