[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [HVM] Another unchecked caller of hvm_copy_to_guest_virt()
# HG changeset patch # User Tim Deegan <Tim.Deegan@xxxxxxxxxxxxx> # Date 1171988336 0 # Node ID f48553000369bc7d81d809bb7fb35a60c7d78fff # Parent 92a4aafb8cbcea5e4ca0923f7def6066fb5d1a72 [HVM] Another unchecked caller of hvm_copy_to_guest_virt() Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxxxxx> --- xen/arch/x86/hvm/io.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletion(-) diff -r 92a4aafb8cbc -r f48553000369 xen/arch/x86/hvm/io.c --- a/xen/arch/x86/hvm/io.c Tue Feb 20 15:37:28 2007 +0000 +++ b/xen/arch/x86/hvm/io.c Tue Feb 20 16:18:56 2007 +0000 @@ -715,7 +715,18 @@ static void hvm_mmio_assist(struct cpu_u case INSTR_PUSH: mmio_opp->addr += hvm_get_segment_base(current, x86_seg_ss); - hvm_copy_to_guest_virt(mmio_opp->addr, &p->data, size); + { + unsigned long addr = mmio_opp->addr; + int rv = hvm_copy_to_guest_virt(addr, &p->data, size); + if ( rv != 0 ) + { + addr += p->size - rv; + gdprintk(XENLOG_DEBUG, "Pagefault emulating PUSH from MMIO: " + "va=%#lx\n", addr); + hvm_inject_exception(TRAP_page_fault, PFEC_write_access, addr); + return; + } + } break; } } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |