|
@@ -269,12 +269,12 @@ static int migrate_page_move_mapping(struct address_space *mapping,
|
|
|
|
|
|
radix_tree_replace_slot(pslot, newpage);
|
|
|
|
|
|
- page_unfreeze_refs(page, expected_count);
|
|
|
/*
|
|
|
- * Drop cache reference from old page.
|
|
|
+ * Drop cache reference from old page by unfreezing
|
|
|
+ * to one less reference.
|
|
|
* We know this isn't the last reference.
|
|
|
*/
|
|
|
- __put_page(page);
|
|
|
+ page_unfreeze_refs(page, expected_count - 1);
|
|
|
|
|
|
/*
|
|
|
* If moved to a different zone then also account
|
|
@@ -334,9 +334,7 @@ int migrate_huge_page_move_mapping(struct address_space *mapping,
|
|
|
|
|
|
radix_tree_replace_slot(pslot, newpage);
|
|
|
|
|
|
- page_unfreeze_refs(page, expected_count);
|
|
|
-
|
|
|
- __put_page(page);
|
|
|
+ page_unfreeze_refs(page, expected_count - 1);
|
|
|
|
|
|
spin_unlock_irq(&mapping->tree_lock);
|
|
|
return 0;
|