I heartily endorse Zi Yan's minimal fixes. These patches, drawn from my development tree and with absolutely no testing, are a different approach to fixing the problem. I would have submitted these patches earlier if I'd known they were needed. I think migrate_misplaced_transhuge_page() may be missing from Zi's patch, but maybe filesystem pages can't end up in that path? Anyway, let me know if you like these patches better. Matthew Wilcox (Oracle) (4): mm/migrate: Use a folio in alloc_migration_target() mm/migrate: Use a folio in migrate_misplaced_transhuge_page() mm: Add vma_alloc_folio() mm/mempolicy: Use vma_alloc_folio() in new_page() include/linux/gfp.h | 8 +++-- mm/mempolicy.c | 38 +++++++++++++-------- mm/migrate.c | 80 +++++++++++++++------------------------------ 3 files changed, 56 insertions(+), 70 deletions(-) -- 2.34.1