From bd80bb02047ce2448aafe4c0219fa5a3f6af790b Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Fri, 10 Jan 2014 11:39:21 +0100 Subject: [PATCH] defer the domain mapping in scrub_one_page() This avoids a resource leak and needless playing with the pagetables in the case that the page is broken. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Reviewed-by: Keir Fraser master commit: 7dd4f9da063cb2cd43426c785535534c9d958ce5 master date: 2013-12-09 14:13:23 +0100 --- xen/common/page_alloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 2f563e2224..5cba5e096e 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1499,11 +1499,13 @@ __initcall(pagealloc_keyhandler_init); void scrub_one_page(struct page_info *pg) { - void *p = __map_domain_page(pg); + void *p; if ( unlikely(pg->count_info & PGC_broken) ) return; + p = __map_domain_page(pg); + #ifndef NDEBUG /* Avoid callers relying on allocations returning zeroed pages. */ memset(p, 0xc2, PAGE_SIZE); -- 2.39.5