[PATCH v2 46/69] mm/sparse-vmemmap: Map shared vmemmap tail pages read-only

From: Muchun Song

Date: Wed May 13 2026 - 09:36:50 EST


Shared vmemmap tail pages are now installed through
vmemmap_pte_populate().

Map those shared pages with PAGE_KERNEL_RO so writes to shared tail
vmemmap entries fault immediately instead of silently corrupting shared
metadata.

Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
---
mm/sparse-vmemmap.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
index 182d0c7dd1e7..9811c92ad258 100644
--- a/mm/sparse-vmemmap.c
+++ b/mm/sparse-vmemmap.c
@@ -158,7 +158,8 @@ static pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, in
if (slab_is_available())
get_page(page);

- entry = pfn_pte(page_to_pfn(page), PAGE_KERNEL);
+ /* Map shared tail page read-only to catch illegal writes. */
+ entry = pfn_pte(page_to_pfn(page), PAGE_KERNEL_RO);
} else {
void *vaddr = vmemmap_alloc_block_buf(PAGE_SIZE, node, altmap);

--
2.54.0