On Sun, Feb 05, 2017 at 11:12:39AM -0500, Zi Yan wrote: > From: Zi Yan <z...@nvidia.com> > > It allows splitting huge pmd while you are holding the pmd lock. > It is prepared for future zap_pmd_range() use. > > Signed-off-by: Zi Yan <zi....@cs.rutgers.edu> > --- > include/linux/huge_mm.h | 2 ++ > mm/huge_memory.c | 22 ++++++++++++---------- > 2 files changed, 14 insertions(+), 10 deletions(-) > ... > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 03e4566fc226..cd66532ef667 100644 ... > @@ -2036,10 +2039,9 @@ void __split_huge_pmd(struct vm_area_struct *vma, > pmd_t *pmd, > clear_page_mlock(page); > } else if (!pmd_devmap(*pmd)) > goto out; > - __split_huge_pmd_locked(vma, pmd, haddr, freeze); > + __split_huge_pmd_locked(vma, pmd, address, freeze);
Could you explain what is intended on this change? If some caller (f.e. wp_huge_pmd?) could call __split_huge_pmd() with address not aligned with pmd border, __split_huge_pmd_locked() results in triggering VM_BUG_ON(haddr & ~HPAGE_PMD_MASK). Thanks, Naoya Horiguchi > out: > spin_unlock(ptl); > - mmu_notifier_invalidate_range_end(mm, haddr, haddr + HPAGE_PMD_SIZE); > } > > void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long > address, > -- > 2.11.0 >