mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +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>
master commit: 4bd78937ec
master date: 2014-06-17 15:21:10 +0200
This commit is contained in:
1 parent
fffe193f53
commit
d03e21fdc7
1 file changed
+5
@@ -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;
|
||||
}
|
||||
|
||||