]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/huge_memory.c
mm: convert try_to_unmap_one() to use page_vma_mapped_walk()
[karo-tx-linux.git] / mm / huge_memory.c
index a7bac4f2b78aa62e750f6282dd6215b54a983dd3..efddd02141a8f67c972c436a32721ecf1392b74a 100644 (file)
@@ -2106,24 +2106,16 @@ void vma_adjust_trans_huge(struct vm_area_struct *vma,
 static void freeze_page(struct page *page)
 {
        enum ttu_flags ttu_flags = TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS |
-               TTU_RMAP_LOCKED;
-       int i, ret;
+               TTU_RMAP_LOCKED | TTU_SPLIT_HUGE_PMD;
+       int ret;
 
        VM_BUG_ON_PAGE(!PageHead(page), page);
 
        if (PageAnon(page))
                ttu_flags |= TTU_MIGRATION;
 
-       /* We only need TTU_SPLIT_HUGE_PMD once */
-       ret = try_to_unmap(page, ttu_flags | TTU_SPLIT_HUGE_PMD);
-       for (i = 1; !ret && i < HPAGE_PMD_NR; i++) {
-               /* Cut short if the page is unmapped */
-               if (page_count(page) == 1)
-                       return;
-
-               ret = try_to_unmap(page + i, ttu_flags);
-       }
-       VM_BUG_ON_PAGE(ret, page + i - 1);
+       ret = try_to_unmap(page, ttu_flags);
+       VM_BUG_ON_PAGE(ret, page);
 }
 
 static void unfreeze_page(struct page *page)