[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86/mm: Fix balooning+sharing
# HG changeset patch # User Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> # Date 1328185651 0 # Node ID e2e2df4224e221ff7bbb9a75083d3b21f70a47d2 # Parent 23fe4a60190f11efc750af51f55228183f7bb736 x86/mm: Fix balooning+sharing Never mind that ballooning a shared page makes no sense. We still fix it because it may be exercised. Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> Signed-off-by: Tim Deegan <tim@xxxxxxx> Committed-by: Tim Deegan <tim@xxxxxxx> --- diff -r 23fe4a60190f -r e2e2df4224e2 xen/common/memory.c --- a/xen/common/memory.c Thu Feb 02 12:23:18 2012 +0000 +++ b/xen/common/memory.c Thu Feb 02 12:27:31 2012 +0000 @@ -183,14 +183,14 @@ page = mfn_to_page(mfn); #ifdef CONFIG_X86 - /* If gmfn is shared, just drop the guest reference (which may or may not - * free the page) */ - if(p2m_is_shared(p2mt)) + if ( p2m_is_shared(p2mt) ) { - put_page_and_type(page); - guest_physmap_remove_page(d, gmfn, mfn, 0); - put_gfn(d, gmfn); - return 1; + /* Unshare the page, bail out on error. We unshare because + * we might be the only one using this shared page, and we + * need to trigger proper cleanup. Once done, this is + * like any other page. */ + if ( mem_sharing_unshare_page(d, gmfn, 0) ) + return 0; } #endif /* CONFIG_X86 */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |