Re: [PATCH 4/9] x86, pkeys: override pkey when moving away from PROT_EXEC

From: Dave Hansen
Date: Mon Apr 30 2018 - 12:36:50 EST


On 04/30/2018 12:51 AM, Ram Pai wrote:
> /*
> * Look for a protection-key-drive execute-only mapping
> * which is now being given permissions that are not
> * execute-only. Move it back to the default pkey.
> */
> if (vma_is_pkey_exec_only(vma) && (prot != PROT_EXEC)) <--------
> return ARCH_DEFAULT_PKEY;
>
> /*
> * The mapping is execute-only. Go try to get the
> * execute-only protection key. If we fail to do that,
> * fall through as if we do not have execute-only
> * support.
> */
> if (prot == PROT_EXEC) {
> pkey = execute_only_pkey(vma->vm_mm);
> if (pkey > 0)
> return pkey;
> }

Yes, that would also work. It's just a matter of whether you prefer
having the prot==PROT_EXEC checks in one place or two. I'd rather leave
it the way I've got it unless there are major objections since it's been
tested.