page->private should not be set in tail pages. Commit 4265d67e405a ("mm/migrate_device: add THP splitting during migration") removed a DEBUG_VM check without a proper reason[1]. Add it back.
Unified · Split
| @@ -3591,6 +3591,13 @@ static void __split_folio_to_order(struct folio *folio, int old_order, · 3590 unmodified lines | ||
| 3591 | 3591 | new_folio->mapping = folio->mapping; |
| 3592 | 3592 | new_folio->index = folio->index + i; |
| 3593 | 3593 | |
| 3594 | + /* | |
| 3595 | + * page->private should not be set in tail pages. Warn once | |
| 3596 | + * if private is unexpectedly set. Do it before swap.val assignment | |
| 3597 | + * since private overlaps with swap.val. | |
| 3598 | + */ | |
| 3599 | + VM_WARN_ON_ONCE_PAGE(new_folio->private, new_head); | |
| 3600 | + | |
| 3594 | 3601 | if (folio_test_swapcache(folio)) |
| 3595 | 3602 | new_folio->swap.val = folio->swap.val + i; |
| 3596 | 3603 | |