|
@@ -1837,9 +1837,9 @@ static void collapse_huge_page(struct mm_struct *mm,
|
|
|
spin_lock(ptl);
|
|
|
isolated = __collapse_huge_page_isolate(vma, address, pte);
|
|
|
spin_unlock(ptl);
|
|
|
- pte_unmap(pte);
|
|
|
|
|
|
if (unlikely(!isolated)) {
|
|
|
+ pte_unmap(pte);
|
|
|
spin_lock(&mm->page_table_lock);
|
|
|
BUG_ON(!pmd_none(*pmd));
|
|
|
set_pmd_at(mm, address, pmd, _pmd);
|
|
@@ -1856,6 +1856,7 @@ static void collapse_huge_page(struct mm_struct *mm,
|
|
|
anon_vma_unlock(vma->anon_vma);
|
|
|
|
|
|
__collapse_huge_page_copy(pte, new_page, vma, address, ptl);
|
|
|
+ pte_unmap(pte);
|
|
|
__SetPageUptodate(new_page);
|
|
|
pgtable = pmd_pgtable(_pmd);
|
|
|
VM_BUG_ON(page_count(pgtable) != 1);
|