[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/mem_sharing: check for errors in p2m->set_entry().
commit 1ab3eea9d8873cb0c60e59d55a89c2f1842a5063 Author: Tim Deegan <tim@xxxxxxx> AuthorDate: Thu Mar 7 14:08:24 2013 +0000 Commit: Tim Deegan <tim@xxxxxxx> CommitDate: Thu Mar 14 10:36:01 2013 +0000 x86/mem_sharing: check for errors in p2m->set_entry(). This call ought always to succeed. Assert that it does rather than ignoring the return value. Signed-off-by: Tim Deegan <tim@xxxxxxx> Acked-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/mm/mem_sharing.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c index 1caa900..0364bb0 100644 --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -1273,6 +1273,8 @@ int relinquish_shared_pages(struct domain *d) p2m_access_t a; p2m_type_t t; mfn_t mfn; + int set_rc; + if ( atomic_read(&d->shr_pages) == 0 ) break; mfn = p2m->get_entry(p2m, gfn, &t, &a, 0, NULL); @@ -1281,10 +1283,12 @@ int relinquish_shared_pages(struct domain *d) /* Does not fail with ENOMEM given the DESTROY flag */ BUG_ON(__mem_sharing_unshare_page(d, gfn, MEM_SHARING_DESTROY_GFN)); - /* Clear out the p2m entry so no one else may try to - * unshare */ - p2m->set_entry(p2m, gfn, _mfn(0), PAGE_ORDER_4K, - p2m_invalid, p2m_access_rwx); + /* Clear out the p2m entry so no one else may try to + * unshare. Must succeed: we just read the old entry and + * we hold the p2m lock. */ + set_rc = p2m->set_entry(p2m, gfn, _mfn(0), PAGE_ORDER_4K, + p2m_invalid, p2m_access_rwx); + ASSERT(set_rc != 0); count++; } -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |