diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 2289a0416cdc..7f3c53c0d3d4 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -3591,6 +3591,13 @@ static void __split_folio_to_order(struct folio *folio, int old_order, new_folio->mapping = folio->mapping; new_folio->index = folio->index + i; + /* + * page->private should not be set in tail pages. Warn once + * if private is unexpectedly set. Do it before swap.val assignment + * since private overlaps with swap.val. + */ + VM_WARN_ON_ONCE_PAGE(new_folio->private, new_head); + if (folio_test_swapcache(folio)) new_folio->swap.val = folio->swap.val + i;