On Thu, Feb 18, 2021 at 12:34:55PM -0800, Axel Rasmussen wrote: > On Thu, Feb 18, 2021 at 12:32 PM Peter Xu <peterx@xxxxxxxxxx> wrote: > > > > On Thu, Feb 18, 2021 at 10:32:00AM -0800, Axel Rasmussen wrote: > > > > @@ -1448,6 +1449,9 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx, > > > > vma->vm_flags = new_flags; > > > > vma->vm_userfaultfd_ctx.ctx = ctx; > > > > > > > > + if (is_vm_hugetlb_page(vma) && uffd_disable_huge_pmd_share(vma)) > > > > + hugetlb_unshare_all_pmds(vma); > > > > > > This line yields the following error, if building with: > > > # CONFIG_CMA is not set > > > > > > ./fs/userfaultfd.c:1459: undefined reference to `hugetlb_unshare_all_pmds' > > > > Ouch.. Axel, you mean CONFIG_HUGETLBFS rather than CONFIG_CMA, am I right? > > Surprisingly no, there's a "#ifdef CONFIG_CMA" line ~100 lines above > where hugetlb_unshare_all_pmds is defined in hugetlb.c which causes > this. My guess is that putting the function inside that block was > accidental and it can just be moved. Right, thanks for catching that, I actually need to fix both. Thanks, -- Peter Xu