Subject: [PATCH 1/3] arm64: vdso: put vdso datapage in a separate vma

From: [email-masked] (Nathan Lynch)
Date: Wed, 9 Jul 2014 14:44:33 -0500

Hi Will, one question (and maybe it's more of a question for Andy than
for you).

On 07/09/2014 01:22 PM, Will Deacon wrote:
> -	ret = install_special_mapping(mm, vdso_base, vdso_mapping_len,
> +	ret = install_special_mapping(mm, vdso_base, vdso_text_len,
>  				      VM_READ|VM_EXEC|
>  				      VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC,
>  				      vdso_pagelist);
> -	if (ret) {
> -		mm->context.vdso = NULL;
> +	if (ret)
> +		goto up_fail;
> +
> +	vdso_base += vdso_text_len;
> +	ret = install_special_mapping(mm, vdso_base, PAGE_SIZE,
> +				      VM_READ|VM_MAYREAD,
> +				      vdso_pagelist + vdso_pages);

I note this code sets VM_MAYREAD for the data page, while x86's vvar
mapping sets only VM_READ.  (Personally I am not totally clear on the
meaning of VM_MAYREAD, but it looks like it would have implications for
use of mprotect on the mapping.)  Should one arch or the other adjust
its flags?