[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 09 of 17] x86/mm/p2m: Fix locking discipline around p2m updates
# HG changeset patch # User Tim Deegan <Tim.Deegan@xxxxxxxxxx> # Date 1307017012 -3600 # Node ID 32f80f08d7246cac9c75d4820698e754550a425a # Parent dd89c48f2ac5c55e8a46159390c2c2f83a7b7742 x86/mm/p2m: Fix locking discipline around p2m updates. Direct callers of the p2m setting functions must hold the p2m lock. Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx> diff -r dd89c48f2ac5 -r 32f80f08d724 xen/arch/x86/mm/hap/nested_hap.c --- a/xen/arch/x86/mm/hap/nested_hap.c Thu Jun 02 13:16:52 2011 +0100 +++ b/xen/arch/x86/mm/hap/nested_hap.c Thu Jun 02 13:16:52 2011 +0100 @@ -103,9 +103,12 @@ nestedhap_fix_p2m(struct p2m_domain *p2m ASSERT(p2m); ASSERT(p2m->set_entry); - rv = p2m->set_entry(p2m, L2_gpa >> PAGE_SHIFT, + p2m_lock(p2m); + rv = set_p2m_entry(p2m, L2_gpa >> PAGE_SHIFT, page_to_mfn(maddr_to_page(L0_gpa)), 0 /*4K*/, p2mt, p2ma); + p2m_unlock(p2m); + if (rv == 0) { gdprintk(XENLOG_ERR, "failed to set entry for 0x%"PRIx64" -> 0x%"PRIx64"\n", diff -r dd89c48f2ac5 -r 32f80f08d724 xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Thu Jun 02 13:16:52 2011 +0100 +++ b/xen/arch/x86/mm/p2m.c Thu Jun 02 13:16:52 2011 +0100 @@ -140,6 +140,8 @@ int set_p2m_entry(struct p2m_domain *p2m unsigned int order; int rc = 1; + ASSERT(p2m_locked_by_me(p2m)); + while ( todo ) { if ( hap_enabled(d) ) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |