[PATCH 5/6] arm64: vdso32: Remove a bunch of #ifdef CONFIG_COMPAT_VDSO guards

Mark Rutland mark.rutland at arm.com
Tue Jun 23 05:10:42 EDT 2020


On Tue, Jun 23, 2020 at 09:54:35AM +0100, Will Deacon wrote:
> Most of the compat vDSO code can be built and guarded using IS_ENABLED,
> so drop the unnecessary #ifdefs.
> 
> Signed-off-by: Will Deacon <will at kernel.org>

I'd considered doing this when I did the other cleanup, but I avoided
this only because of the AA32 sigpage being mutually exclusive with the
full AA32 VDSO, and not seeing a nice way to enforce that otherwise.

So assuming the prior patch removing that is valid, this patch looks
entirely sane to me, and with that assumption:

Acked-by: Mark Rutland <mark.rutland at arm.com>

Mark.

> ---
>  arch/arm64/kernel/vdso.c | 44 ++++++++++++++++------------------------
>  1 file changed, 17 insertions(+), 27 deletions(-)
> 
> diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
> index e546df0efefb..30b01c2f50da 100644
> --- a/arch/arm64/kernel/vdso.c
> +++ b/arch/arm64/kernel/vdso.c
> @@ -29,15 +29,11 @@
>  #include <asm/vdso.h>
>  
>  extern char vdso_start[], vdso_end[];
> -#ifdef CONFIG_COMPAT_VDSO
>  extern char vdso32_start[], vdso32_end[];
> -#endif /* CONFIG_COMPAT_VDSO */
>  
>  enum vdso_abi {
>  	VDSO_ABI_AA64,
> -#ifdef CONFIG_COMPAT_VDSO
>  	VDSO_ABI_AA32,
> -#endif /* CONFIG_COMPAT_VDSO */
>  };
>  
>  struct vdso_abi_info {
> @@ -178,21 +174,17 @@ static int __setup_additional_pages(enum vdso_abi abi,
>  /*
>   * Create and map the vectors page for AArch32 tasks.
>   */
> -#ifdef CONFIG_COMPAT_VDSO
>  static int aarch32_vdso_mremap(const struct vm_special_mapping *sm,
>  		struct vm_area_struct *new_vma)
>  {
>  	return __vdso_remap(VDSO_ABI_AA32, sm, new_vma);
>  }
> -#endif /* CONFIG_COMPAT_VDSO */
>  
>  enum aarch32_map {
>  	AA32_MAP_VECTORS, /* kuser helpers */
> -#ifdef CONFIG_COMPAT_VDSO
> +	AA32_MAP_SIGPAGE,
>  	AA32_MAP_VVAR,
>  	AA32_MAP_VDSO,
> -#endif
> -	AA32_MAP_SIGPAGE
>  };
>  
>  static struct page *aarch32_vectors_page __ro_after_init;
> @@ -203,7 +195,10 @@ static struct vm_special_mapping aarch32_vdso_maps[] = {
>  		.name	= "[vectors]", /* ABI */
>  		.pages	= &aarch32_vectors_page,
>  	},
> -#ifdef CONFIG_COMPAT_VDSO
> +	[AA32_MAP_SIGPAGE] = {
> +		.name	= "[sigpage]", /* ABI */
> +		.pages	= &aarch32_sig_page,
> +	},
>  	[AA32_MAP_VVAR] = {
>  		.name = "[vvar]",
>  	},
> @@ -211,11 +206,6 @@ static struct vm_special_mapping aarch32_vdso_maps[] = {
>  		.name = "[vdso]",
>  		.mremap = aarch32_vdso_mremap,
>  	},
> -#endif /* CONFIG_COMPAT_VDSO */
> -	[AA32_MAP_SIGPAGE] = {
> -		.name	= "[sigpage]", /* ABI */
> -		.pages	= &aarch32_sig_page,
> -	},
>  };
>  
>  static int aarch32_alloc_kuser_vdso_page(void)
> @@ -254,25 +244,25 @@ static int aarch32_alloc_sigpage(void)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_COMPAT_VDSO
>  static int __aarch32_alloc_vdso_pages(void)
>  {
> +
> +	if (!IS_ENABLED(CONFIG_COMPAT_VDSO))
> +		return 0;
> +
>  	vdso_info[VDSO_ABI_AA32].dm = &aarch32_vdso_maps[AA32_MAP_VVAR];
>  	vdso_info[VDSO_ABI_AA32].cm = &aarch32_vdso_maps[AA32_MAP_VDSO];
>  
>  	return __vdso_init(VDSO_ABI_AA32);
>  }
> -#endif /* CONFIG_COMPAT_VDSO */
>  
>  static int __init aarch32_alloc_vdso_pages(void)
>  {
>  	int ret;
>  
> -#ifdef CONFIG_COMPAT_VDSO
>  	ret = __aarch32_alloc_vdso_pages();
>  	if (ret)
>  		return ret;
> -#endif
>  
>  	ret = aarch32_alloc_sigpage();
>  	if (ret)
> @@ -341,14 +331,14 @@ int aarch32_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
>  	if (ret)
>  		goto out;
>  
> -#ifdef CONFIG_COMPAT_VDSO
> -	ret = __setup_additional_pages(VDSO_ABI_AA32,
> -				       mm,
> -				       bprm,
> -				       uses_interp);
> -	if (ret)
> -		goto out;
> -#endif /* CONFIG_COMPAT_VDSO */
> +	if (IS_ENABLED(CONFIG_COMPAT_VDSO)) {
> +		ret = __setup_additional_pages(VDSO_ABI_AA32,
> +					       mm,
> +					       bprm,
> +					       uses_interp);
> +		if (ret)
> +			goto out;
> +	}
>  
>  	ret = aarch32_sigreturn_setup(mm);
>  out:
> -- 
> 2.27.0.111.gc72c7da667-goog
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel



More information about the linux-arm-kernel mailing list