> diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
> index f32facdb3035..edad847a2ecd 100644
> --- a/arch/x86/mm/pgtable.c
> +++ b/arch/x86/mm/pgtable.c
> @@ -411,6 +411,7 @@ int pmdp_set_access_flags(struct vm_area_struct *vma,
>       return changed;
>  }
>  
> +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
>  int pudp_set_access_flags(struct vm_area_struct *vma, unsigned long address,
>                         pud_t *pudp, pud_t entry, int dirty)
>  {
> @@ -430,6 +431,7 @@ int pudp_set_access_flags(struct vm_area_struct *vma, 
> unsigned long address,
>  
>       return changed;
>  }
> +#endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */
>  #endif
>  
>  bool ptep_test_and_clear_young(struct vm_area_struct *vma,

#ifdefs in .c files are evil.

The changelog doesn't make a strong enough case for why this evil should
be tolerated.

These are also _precisely_ the kind of #ifdefs that cause compilation
problems. This one is:

#ifdef CONFIG_TRANSPARENT_HUGEPAGE
/// function here
#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
/// another function here
#endif
#endif

So there end up being a couple of dependent config options in play. If
there are compile problems, this makes them harder to find.

What is the _actual_ goal here? Saving 50 bytes of kernel text?

Reply via email to