On Thu, Jun 13, 2019 at 10:57:45AM -0700, Song Liu wrote: > @@ -419,6 +419,11 @@ static struct page *follow_pmd_mask(struct vm_area_struct *vma, > put_page(page); > if (pmd_none(*pmd)) > return no_page_table(vma, flags); > + } else { /* flags & FOLL_SPLIT_PMD */ > + spin_unlock(ptl); > + ret = 0; > + split_huge_pmd(vma, pmd, address); > + pte_alloc(mm, pmd); pte_alloc() can fail and the failure should be propogated to the caller. -- Kirill A. Shutemov