[SRU][N][PATCH 1/3] UBUNTU: SAUCE: Revert "mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize()"
Matthew Ruffell
matthew.ruffell at canonical.com
Tue Aug 12 07:38:15 UTC 2025
BugLink: https://bugs.launchpad.net/bugs/2120330
This reverts commit 3858edb1146374f3240d1ec769ba857186531b17 (ubuntu-noble).
An incorrect backport was performed, causing the old page to be placed
back instead of the new page, e.g.:
src = page_folio(page);
dst = page_folio(newpage);
+ if (!is_zone_device_page(page))
+ putback_lru_page(page);
when in 41cddf83d8b00f29fd105e7a0777366edc69a5cf we have:
+ if (!folio_is_zone_device(dst))
+ folio_add_lru(dst);
in which case, we should really have had the backport as:
+ if (!folio_is_zone_device(newpage))
+ folio_add_lru(newpage);
Revert and fix this in an upcoming patch.
Signed-off-by: Matthew Ruffell <matthew.ruffell at canonical.com>
---
mm/migrate_device.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index fae29eb0b012..b6c27c76e1a0 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -840,15 +840,20 @@ void migrate_device_finalize(unsigned long *src_pfns,
src = page_folio(page);
dst = page_folio(newpage);
- if (!is_zone_device_page(page))
- putback_lru_page(page);
remove_migration_ptes(src, dst, false);
folio_unlock(src);
- put_page(page);
+
+ if (is_zone_device_page(page))
+ put_page(page);
+ else
+ putback_lru_page(page);
if (newpage != page) {
unlock_page(newpage);
- put_page(newpage);
+ if (is_zone_device_page(newpage))
+ put_page(newpage);
+ else
+ putback_lru_page(newpage);
}
}
}
--
2.50.0
More information about the kernel-team
mailing list