Undo the page allocation in the ulikely event the copy_to_guest fails.
Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
---
I have not exercised this code path, it was found during code inspection in 4.0
xen/common/memory.c | 9 +++++++++
1 file changed, 9 insertions(+)
--- xen-unstable.hg-4.1.22548.orig/xen/common/memory.c
+++ xen-unstable.hg-4.1.22548/xen/common/memory.c
@@ -82,7 +82,10 @@ static void increase_reservation(struct
{
mfn = page_to_mfn(page);
if ( unlikely(__copy_to_guest_offset(a->extent_list, i, &mfn, 1)) )
+ {
+ free_domheap_pages(page, a->extent_order);
goto out;
+ }
}
}
@@ -144,7 +147,13 @@ static void populate_physmap(struct memo
/* Inform the domain of the new page's machine address. */
if ( unlikely(__copy_to_guest_offset(a->extent_list, i, &mfn,
1)) )
+ {
+ for ( j = 0; j < (1 << a->extent_order); j++ )
+ set_gpfn_from_mfn(mfn + j, INVALID_M2P_ENTRY);
+ guest_physmap_remove_page(d, gpfn, mfn, a->extent_order);
+ free_domheap_pages(page, a->extent_order);
goto out;
+ }
}
}
}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|