mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
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>
This commit is contained in:
1 parent
5157e9dfd5
commit
4bd78937ec
1 file changed
+5
@@ -1587,7 +1587,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);
|
||||
}
|
||||
@@ -1757,6 +1760,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;
|
||||
}
|
||||
|
||||