X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=mm%2Fhuge_memory.c;h=e187454d82f666a70bab08762ca92cd60b8f848c;hb=08b018327c2e8412fd76f821e9bb9de36ef48cb1;hp=004c9c2aac788ebca9c7de0edb95244396b880f1;hpb=42a9fa9957e369240936891c9a521ab671eed4e7;p=~andy%2Flinux diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 004c9c2aac7..e187454d82f 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1203,6 +1203,8 @@ static void __split_huge_page_refcount(struct page *page) BUG_ON(!PageDirty(page_tail)); BUG_ON(!PageSwapBacked(page_tail)); + mem_cgroup_split_huge_fixup(page, page_tail); + lru_add_page_tail(zone, page, page_tail); } @@ -1837,9 +1839,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 +1858,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);