]> xenbits.xensource.com Git - xen.git/commitdiff
page-alloc: scrub pages used by hypervisor upon freeing
authorJan Beulich <jbeulich@suse.com>
Tue, 17 Jun 2014 14:07:28 +0000 (16:07 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 17 Jun 2014 14:07:28 +0000 (16:07 +0200)
... 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: 4bd78937ec324bcef4e29ef951e0ff9815770de1
master date: 2014-06-17 15:21:10 +0200

xen/common/page_alloc.c

index 5cba5e096e557d7cb04f5ebef42b5e808c228a7f..c32bbe15b7f879066b5514fc2f4367421afcf819 100644 (file)
@@ -1254,7 +1254,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);
 }
@@ -1421,6 +1424,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;
     }