On 3/10/21 10:53 AM, Peter Xu wrote: > want_pmd_share() is undefined with !ARCH_WANT_HUGE_PMD_SHARE since it's put > by accident into a "#ifdef ARCH_WANT_HUGE_PMD_SHARE" block. Moving it out > won't work either since vma_shareable() is only defined within the block. > Define it for !ARCH_WANT_HUGE_PMD_SHARE instead. > > Fixes: 5b109cc1cdcc ("hugetlb/userfaultfd: forbid huge pmd sharing when uffd enabled") That commit id is from Andrew's tree and I don't think it is stable. There is a different id in the next tree. Not exactly sure how this is supposed to be handled. > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > Cc: Axel Rasmussen <axelrasmussen@xxxxxxxxxx> > Reported-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx> > Tested-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx> > Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> > --- > mm/hugetlb.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) Thanks Peter, Not your fault, but that header file is a bit of a mess. Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> -- Mike Kravetz > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index d58f1456fe27..8dda7e034477 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -5469,9 +5469,6 @@ static bool vma_shareable(struct vm_area_struct *vma, unsigned long addr) > > bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr) > { > -#ifndef CONFIG_ARCH_WANT_HUGE_PMD_SHARE > - return false; > -#endif > #ifdef CONFIG_USERFAULTFD > if (uffd_disable_huge_pmd_share(vma)) > return false; > @@ -5616,6 +5613,11 @@ void adjust_range_if_pmd_sharing_possible(struct vm_area_struct *vma, > unsigned long *start, unsigned long *end) > { > } > + > +bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr) > +{ > + return false; > +} > #endif /* CONFIG_ARCH_WANT_HUGE_PMD_SHARE */ > > #ifdef CONFIG_ARCH_WANT_GENERAL_HUGETLB >