|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] [HVM] Another unchecked caller of hvm_cop
# 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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] [HVM] Another unchecked caller of hvm_copy_to_guest_virt(),
Xen patchbot-unstable <=
|
|
|
|
|