|
@@ -2325,7 +2325,12 @@ static void collapse_huge_page(struct mm_struct *mm,
|
|
|
pte_unmap(pte);
|
|
|
spin_lock(&mm->page_table_lock);
|
|
|
BUG_ON(!pmd_none(*pmd));
|
|
|
- set_pmd_at(mm, address, pmd, _pmd);
|
|
|
+ /*
|
|
|
+ * We can only use set_pmd_at when establishing
|
|
|
+ * hugepmds and never for establishing regular pmds that
|
|
|
+ * points to regular pagetables. Use pmd_populate for that
|
|
|
+ */
|
|
|
+ pmd_populate(mm, pmd, pmd_pgtable(_pmd));
|
|
|
spin_unlock(&mm->page_table_lock);
|
|
|
anon_vma_unlock_write(vma->anon_vma);
|
|
|
goto out;
|