[PATCH] fixup! mm/sparse-vmemmap: switch device DAX to shared tail vmemmap pages
From: Muchun Song
Date: Wed Sep 30 2026 - 11:13:09 EST
prep_compound_tail() makes PageCompound() true. Calling
__SetPageReserved() afterwards violates the PF_NO_COMPOUND policy and
triggers VM_BUG_ON_PGFLAGS() when CONFIG_DEBUG_VM_PGFLAGS is enabled.
Set PG_reserved before preparing the compound tail.
Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
---
mm/sparse-vmemmap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
index 4be85e194c78..23b31bc4bf94 100644
--- a/mm/sparse-vmemmap.c
+++ b/mm/sparse-vmemmap.c
@@ -222,9 +222,9 @@ struct page __ref *vmemmap_shared_tail_page(unsigned int order, struct zone *zon
atomic_set(&page->_mapcount, -1);
set_page_node(page, zone_to_nid(zone));
set_page_zone(page, zone_idx(zone));
- prep_compound_tail(page, NULL, order);
if (zone_is_zone_device(zone))
__SetPageReserved(page);
+ prep_compound_tail(page, NULL, order);
}
page = virt_to_page(addr);
--
2.54.0