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: 4a9e73e6e5 ("xen/arm: static memory initialization")
Signed-off-by: Peter Kang <peter.kang@boeing.com>
This commit is contained in:
Peter Kang authored and Jan Beulich committed 2026-10-27 09:02:42 +01:00
1 parent 8d46c7de2d
commit 65f523e546
1 file changed
+1 -1
+1 -1
View File
@@ -2988,7 +2988,7 @@ void unprepare_staticmem_pages(struct page_info *pg, unsigned long nr_mfns,
if ( need_scrub ) if ( need_scrub )
{ {
/* TODO: asynchronous scrubbing for pages of static memory. */ /* 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; pg[i].count_info |= PGC_static;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.