diff options
author | 2013-08-15 11:11:45 -0700 | |
---|---|---|
committer | 2013-08-15 11:11:45 -0700 | |
commit | ee3e542fec6e69bc9fb668698889a37d93950ddf (patch) | |
tree | e74ee766a4764769ef1d3d45d266b4dea64101d3 /arch/powerpc/mm/pgtable.c | |
parent | ceph: Remove bogus check in invalidatepage (diff) | |
parent | Merge branch 'akpm' (patches from Andrew Morton) (diff) | |
download | wireguard-linux-ee3e542fec6e69bc9fb668698889a37d93950ddf.tar.xz wireguard-linux-ee3e542fec6e69bc9fb668698889a37d93950ddf.zip |
Merge remote-tracking branch 'linus/master' into testing
Diffstat (limited to 'arch/powerpc/mm/pgtable.c')
-rw-r--r-- | arch/powerpc/mm/pgtable.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index 214130a4edc6..edda589795c3 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c @@ -235,6 +235,14 @@ void assert_pte_locked(struct mm_struct *mm, unsigned long addr) pud = pud_offset(pgd, addr); BUG_ON(pud_none(*pud)); pmd = pmd_offset(pud, addr); + /* + * khugepaged to collapse normal pages to hugepage, first set + * pmd to none to force page fault/gup to take mmap_sem. After + * pmd is set to none, we do a pte_clear which does this assertion + * so if we find pmd none, return. + */ + if (pmd_none(*pmd)) + return; BUG_ON(!pmd_present(*pmd)); assert_spin_locked(pte_lockptr(mm, pmd)); } |