[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Fix guest_physmap_add_entry sanity checking logic
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1224673004 -3600 # Node ID 066c84c7018accc44fbec78d3618d12147d7ab54 # Parent 008505c3c65a76917bbd40ba7c2619cbd2fbca53 Fix guest_physmap_add_entry sanity checking logic Fix the logic of the p->m and m->p mapping sanity checks and fixup in guest_physmap_add_entry(). Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> --- xen/arch/x86/mm/p2m.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff -r 008505c3c65a -r 066c84c7018a xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Wed Oct 22 11:55:33 2008 +0100 +++ b/xen/arch/x86/mm/p2m.c Wed Oct 22 11:56:44 2008 +0100 @@ -956,18 +956,18 @@ guest_physmap_add_entry(struct domain *d /* First, remove m->p mappings for existing p->m mappings */ for ( i = 0; i < (1UL << page_order); i++ ) { - omfn = gfn_to_mfn(d, gfn, &ot); + omfn = gfn_to_mfn(d, gfn + i, &ot); if ( p2m_is_ram(ot) ) { ASSERT(mfn_valid(omfn)); - set_gpfn_from_mfn(mfn_x(omfn)+i, INVALID_M2P_ENTRY); + set_gpfn_from_mfn(mfn_x(omfn), INVALID_M2P_ENTRY); } } /* Then, look for m->p mappings for this range and deal with them */ for ( i = 0; i < (1UL << page_order); i++ ) { - ogfn = mfn_to_gfn(d, _mfn(mfn)); + ogfn = mfn_to_gfn(d, _mfn(mfn+i)); if ( #ifdef __x86_64__ (ogfn != 0x5555555555555555L) @@ -975,20 +975,20 @@ guest_physmap_add_entry(struct domain *d (ogfn != 0x55555555L) #endif && (ogfn != INVALID_M2P_ENTRY) - && (ogfn != gfn) ) + && (ogfn != gfn + i) ) { /* This machine frame is already mapped at another physical * address */ P2M_DEBUG("aliased! mfn=%#lx, old gfn=%#lx, new gfn=%#lx\n", - mfn, ogfn, gfn); + mfn + i, ogfn, gfn + i); omfn = gfn_to_mfn(d, ogfn, &ot); if ( p2m_is_ram(ot) ) { ASSERT(mfn_valid(omfn)); P2M_DEBUG("old gfn=%#lx -> mfn %#lx\n", ogfn , mfn_x(omfn)); - if ( mfn_x(omfn) == mfn ) - p2m_remove_page(d, ogfn, mfn, 0); + if ( mfn_x(omfn) == (mfn + i) ) + p2m_remove_page(d, ogfn, mfn + i, 0); } } } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |