On Wed, Jan 13, 2021 at 6:57 PM Oscar Salvador [off-list ref] wrote:
On Wed, Jan 13, 2021 at 01:22:04PM +0800, Muchun Song wrote:
quoted
diff --git a/mm/migrate.c b/mm/migrate.c
index 4385f2fb5d18..a6631c4eb6a6 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1279,6 +1279,12 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
return -ENOSYS;
}
+ if (page_count(hpage) == 1) {
+ /* page was freed from under us. So we are done. */
+ putback_active_hugepage(hpage);
+ return MIGRATEPAGE_SUCCESS;
+ }
+
I was a bit puzzled as why we did not go to the "goto" block that already does
this, but then I saw the put_new_page/new_hpage handlind further down.
It could be re-arranged but out of scope, so:
Agree. I also thought about this. :)
Reviewed-by: Oscar Salvador <osalvador@suse.de>
Thanks.
--
Oscar Salvador
SUSE L3