On Fri, May 04, 2018 at 12:59:27PM -0700, Dave Hansen wrote: > On 05/04/2018 12:22 PM, Ram Pai wrote: > > @@ -407,9 +414,6 @@ static bool pkey_access_permitted(int pkey, bool write, > > bool execute) > > int pkey_shift; > > u64 amr; > > > > - if (!pkey) > > - return true; > > - > > if (!is_pkey_enabled(pkey)) > > return true; > > Looks fine to me. Obviously doesn't have any impact on x86 or the > generic code. > > One question, though. Which other check makes up for this removed !pkey > check?
is_pkey_enabled() does take care of it. we do not enable userspace to change permissions on pkey-0. This information is tracked in UAMOR register. is_pkey_enabled() refers to UAMOR to determine if the given key is modifiable by userspace. since UAMOR has the bit corresponding to key-0 set to 0, is_pkey_enabled(key-0) will return false. The deleted code above, would have done the same job without referring UAMOR. However having special checks on pkey-0 makes pkey-0 special. It defeats the purpose of this patch; which is to make pkey-0 less special :). -- Ram Pai