[PATCH v2 03/14] mm/mm_init: verify zones for template-initialized pages

From: Muchun Song

Date: Fri Nov 13 2026 - 01:12:24 EST


Template-based ZONE_DEVICE initialization bypasses
__init_single_page(), which means copied struct pages do not run the
vmemmap zone consistency check.

Verify each destination after copying the template so the fast path gets
the same validation as regular page initialization.

Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
---
v2:
- Apply the zone verification in memmap_init_page_from_template().
- Collect Reviewed-by from Mike Rapoport.
---
mm/mm_init.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/mm/mm_init.c b/mm/mm_init.c
index 639880afe0ee..5ce5a325021c 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -724,6 +724,7 @@ void __meminit memmap_init_page_from_template(struct page *page,
memcpy_nontemporal(page, template, sizeof(*page));
else
memcpy(page, template, sizeof(*page));
+ vmemmap_optimization_verify_zone(page);
}

struct zone __meminit *pfn_to_zone(unsigned long pfn, int nid)
--
2.54.0