page-alloc: scrub pages used by hypervisor upon freeing

... unless they're part of a fully separate pool (and hence can't ever
be used for guest allocations).

This is CVE-2014-4021 / XSA-100.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Keir Fraser <keir@xen.org>
master commit: 4bd78937ec
master date: 2014-06-17 15:21:10 +0200
This commit is contained in:
Jan Beulich committed 2014-06-17 16:05:04 +02:00
1 parent fffe193f53
commit d03e21fdc7
1 file changed
+5
+5
View File
@@ -1404,7 +1404,10 @@ void free_xenheap_pages(void *v, unsigned int order)
pg = virt_to_page(v);
for ( i = 0; i < (1u << order); i++ )
{
scrub_one_page(&pg[i]);
pg[i].count_info &= ~PGC_xen_heap;
}
free_heap_pages(pg, order);
}
@@ -1571,6 +1574,8 @@ void free_domheap_pages(struct page_info *pg, unsigned int order)
else
{
/* Freeing anonymous domain-heap pages. */
for ( i = 0; i < (1 << order); i++ )
scrub_one_page(&pg[i]);
free_heap_pages(pg, order);
drop_dom_ref = 0;
}
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.