[LINUX] Only destroy a machine-contiguous memory region if
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 15 Jun 2006 10:35:23 +0000 (11:35 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 15 Jun 2006 10:35:23 +0000 (11:35 +0100)
it really is contiguous (e.g., create_contiguous did not fail).
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c

index e2f3a554a3a7889bea85b1c97091779311433119..f9615358d1f933c29d12de658d7403b11393778d 100644 (file)
@@ -365,7 +365,8 @@ void xen_destroy_contiguous_region(unsigned long vstart, unsigned int order)
        };
        set_xen_guest_handle(reservation.extent_start, &frame);
 
-       if (xen_feature(XENFEAT_auto_translated_physmap))
+       if (xen_feature(XENFEAT_auto_translated_physmap) ||
+           !test_bit(__pa(vstart) >> PAGE_SHIFT, contiguous_bitmap))
                return;
 
        scrub_pages(vstart, 1 << order);