diff --git a/mm/migrate.c b/mm/migrate.c index 893ea04498f7..b0cdd3547cc1 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -2885,21 +2885,17 @@ static void migrate_vma_finalize(struct migrate_vma *migrate) newpage = page; } + if (!is_zone_device_page(newpage)) + lru_cache_add(newpage); remove_migration_ptes(page, newpage, false); unlock_page(page); migrate->cpages--; - if (is_zone_device_page(page)) - put_page(page); - else - putback_lru_page(page); + put_page(page); if (newpage != page) { unlock_page(newpage); - if (is_zone_device_page(newpage)) - put_page(newpage); - else - putback_lru_page(newpage); + put_page(newpage); } } }