From 65f523e546c88765096629647315db850cae8553 Mon Sep 17 00:00:00 2001 From: Peter Kang Date: Tue, 27 Oct 2026 09:02:42 +0100 Subject: [PATCH] xen/page_alloc: scrub each page in unprepare_staticmem_pages unprepare_staticmem_pages() can unprepare multiple pages in a static memory range. When need_scrub is true, each page must be scrubbed before it is marked static. The loop currently passes the base pointer pg to scrub_one_page() on every iteration. For a multi-page range, this repeatedly scrubs page 0 and leaves the remaining pages unscrubbed, so a guest can later read stale data from pages 1..nr_mfns-1 of a static or static-shared bank. Pass &pg[i] to scrub_one_page() so each iteration scrubs the page it is processing. This ensures every page in the range is scrubbed before it is marked static. Fixes: 4a9e73e6e53e ("xen/arm: static memory initialization") Signed-off-by: Peter Kang --- xen/common/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index fe150eccd7..5243dba29f 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -2988,7 +2988,7 @@ void unprepare_staticmem_pages(struct page_info *pg, unsigned long nr_mfns, if ( need_scrub ) { /* TODO: asynchronous scrubbing for pages of static memory. */ - scrub_one_page(pg, true); + scrub_one_page(&pg[i], true); } pg[i].count_info |= PGC_static;