[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] A few ptwr cleanups/fixes.
ChangeSet 1.1357, 2005/03/23 18:19:15+00:00, kaf24@xxxxxxxxxxxxxxxxxxxx A few ptwr cleanups/fixes. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> mm.c | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff -Nru a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c --- a/xen/arch/x86/mm.c 2005-03-23 14:03:20 -05:00 +++ b/xen/arch/x86/mm.c 2005-03-23 14:03:20 -05:00 @@ -2398,8 +2398,7 @@ l1pte_propagate_from_guest( d, &l1_pgentry_val(nl1e), &l1_pgentry_val(sl1e[i])); - if ( unlikely(l1_pgentry_val(ol1e) & _PAGE_PRESENT) ) - put_page_from_l1e(ol1e, d); + put_page_from_l1e(ol1e, d); } unmap_domain_mem(pl1e); @@ -2443,7 +2442,7 @@ struct domain *d = current->domain; /* Aligned access only, thank you. */ - if ( (addr & (bytes-1)) != 0 ) + if ( !access_ok(VERIFY_WRITE, addr, bytes) || ((addr & (bytes-1)) != 0) ) { MEM_LOG("ptwr_emulate: Unaligned or bad size ptwr access (%d, %p)\n", bytes, addr); @@ -2481,7 +2480,8 @@ /* We are looking only for read-only mappings of p.t. pages. */ if ( ((pte & (_PAGE_RW | _PAGE_PRESENT)) != _PAGE_PRESENT) || - ((page->u.inuse.type_info & PGT_type_mask) != PGT_l1_page_table) ) + ((page->u.inuse.type_info & PGT_type_mask) != PGT_l1_page_table) || + (page_get_owner(page) != d) ) { MEM_LOG("ptwr_emulate: Page is mistyped or bad pte (%p, %x)\n", pte, page->u.inuse.type_info); @@ -2501,6 +2501,7 @@ if ( cmpxchg((unsigned long *)pl1e, old, val) != old ) { unmap_domain_mem(pl1e); + put_page_from_l1e(nl1e, d); return X86EMUL_CMPXCHG_FAILED; } } @@ -2526,8 +2527,7 @@ } /* Finally, drop the old PTE. */ - if ( unlikely(l1_pgentry_val(ol1e) & _PAGE_PRESENT) ) - put_page_from_l1e(ol1e, d); + put_page_from_l1e(ol1e, d); return X86EMUL_CONTINUE; } @@ -2587,7 +2587,8 @@ /* We are looking only for read-only mappings of p.t. pages. */ if ( ((pte & (_PAGE_RW | _PAGE_PRESENT)) != _PAGE_PRESENT) || - ((page->u.inuse.type_info & PGT_type_mask) != PGT_l1_page_table) ) + ((page->u.inuse.type_info & PGT_type_mask) != PGT_l1_page_table) || + (page_get_owner(page) != ed->domain) ) { return 0; } ------------------------------------------------------- This SF.net email is sponsored by Microsoft Mobile & Embedded DevCon 2005 Attend MEDC 2005 May 9-12 in Vegas. Learn more about the latest Windows Embedded(r) & Windows Mobile(tm) platforms, applications & content. Register by 3/29 & save $300 http://ads.osdn.com/?ad_id=6883&alloc_id=15149&op=click _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |