aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/huge_memory.c1
-rw-r--r--mm/khugepaged.c8
-rw-r--r--mm/migrate.c3
-rw-r--r--mm/rmap.c3
4 files changed, 7 insertions, 8 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index f3c4f9d22821..17f6008f2827 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -2399,7 +2399,6 @@ int split_huge_page_to_list(struct page *page, struct list_head *list)
2399 2399
2400 VM_BUG_ON_PAGE(is_huge_zero_page(page), page); 2400 VM_BUG_ON_PAGE(is_huge_zero_page(page), page);
2401 VM_BUG_ON_PAGE(!PageLocked(page), page); 2401 VM_BUG_ON_PAGE(!PageLocked(page), page);
2402 VM_BUG_ON_PAGE(!PageSwapBacked(page), page);
2403 VM_BUG_ON_PAGE(!PageCompound(page), page); 2402 VM_BUG_ON_PAGE(!PageCompound(page), page);
2404 2403
2405 if (PageAnon(head)) { 2404 if (PageAnon(head)) {
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index ba40b7f673f4..88e4b1737c90 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -483,8 +483,7 @@ void __khugepaged_exit(struct mm_struct *mm)
483 483
484static void release_pte_page(struct page *page) 484static void release_pte_page(struct page *page)
485{ 485{
486 /* 0 stands for page_is_file_cache(page) == false */ 486 dec_node_page_state(page, NR_ISOLATED_ANON + page_is_file_cache(page));
487 dec_node_page_state(page, NR_ISOLATED_ANON + 0);
488 unlock_page(page); 487 unlock_page(page);
489 putback_lru_page(page); 488 putback_lru_page(page);
490} 489}
@@ -532,7 +531,6 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
532 531
533 VM_BUG_ON_PAGE(PageCompound(page), page); 532 VM_BUG_ON_PAGE(PageCompound(page), page);
534 VM_BUG_ON_PAGE(!PageAnon(page), page); 533 VM_BUG_ON_PAGE(!PageAnon(page), page);
535 VM_BUG_ON_PAGE(!PageSwapBacked(page), page);
536 534
537 /* 535 /*
538 * We can do it before isolate_lru_page because the 536 * We can do it before isolate_lru_page because the
@@ -579,8 +577,8 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
579 result = SCAN_DEL_PAGE_LRU; 577 result = SCAN_DEL_PAGE_LRU;
580 goto out; 578 goto out;
581 } 579 }
582 /* 0 stands for page_is_file_cache(page) == false */ 580 inc_node_page_state(page,
583 inc_node_page_state(page, NR_ISOLATED_ANON + 0); 581 NR_ISOLATED_ANON + page_is_file_cache(page));
584 VM_BUG_ON_PAGE(!PageLocked(page), page); 582 VM_BUG_ON_PAGE(!PageLocked(page), page);
585 VM_BUG_ON_PAGE(PageLRU(page), page); 583 VM_BUG_ON_PAGE(PageLRU(page), page);
586 584
diff --git a/mm/migrate.c b/mm/migrate.c
index 5c5df09ac962..b32630d10329 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1944,7 +1944,8 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm,
1944 1944
1945 /* Prepare a page as a migration target */ 1945 /* Prepare a page as a migration target */
1946 __SetPageLocked(new_page); 1946 __SetPageLocked(new_page);
1947 __SetPageSwapBacked(new_page); 1947 if (PageSwapBacked(page))
1948 __SetPageSwapBacked(new_page);
1948 1949
1949 /* anon mapping, we can simply copy page->mapping to the new page: */ 1950 /* anon mapping, we can simply copy page->mapping to the new page: */
1950 new_page->mapping = page->mapping; 1951 new_page->mapping = page->mapping;
diff --git a/mm/rmap.c b/mm/rmap.c
index d7b6d780764b..b4084d09dbe8 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -1424,7 +1424,8 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1424 * Store the swap location in the pte. 1424 * Store the swap location in the pte.
1425 * See handle_pte_fault() ... 1425 * See handle_pte_fault() ...
1426 */ 1426 */
1427 VM_BUG_ON_PAGE(!PageSwapCache(page), page); 1427 VM_BUG_ON_PAGE(!PageSwapCache(page) && PageSwapBacked(page),
1428 page);
1428 1429
1429 if (!PageDirty(page)) { 1430 if (!PageDirty(page)) {
1430 /* It's a freeable page by MADV_FREE */ 1431 /* It's a freeable page by MADV_FREE */