diff options
-rw-r--r-- | mm/huge_memory.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 03a89a2f464b..362c329b83fe 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c | |||
@@ -2325,7 +2325,12 @@ static void collapse_huge_page(struct mm_struct *mm, | |||
2325 | pte_unmap(pte); | 2325 | pte_unmap(pte); |
2326 | spin_lock(&mm->page_table_lock); | 2326 | spin_lock(&mm->page_table_lock); |
2327 | BUG_ON(!pmd_none(*pmd)); | 2327 | BUG_ON(!pmd_none(*pmd)); |
2328 | set_pmd_at(mm, address, pmd, _pmd); | 2328 | /* |
2329 | * We can only use set_pmd_at when establishing | ||
2330 | * hugepmds and never for establishing regular pmds that | ||
2331 | * points to regular pagetables. Use pmd_populate for that | ||
2332 | */ | ||
2333 | pmd_populate(mm, pmd, pmd_pgtable(_pmd)); | ||
2329 | spin_unlock(&mm->page_table_lock); | 2334 | spin_unlock(&mm->page_table_lock); |
2330 | anon_vma_unlock_write(vma->anon_vma); | 2335 | anon_vma_unlock_write(vma->anon_vma); |
2331 | goto out; | 2336 | goto out; |