|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 15/17] x86/hvm: make sure translated MMIO reads or writes fall within a page
...otherwise they will simply carry on to the next page using a normal
linear-to-phys translation.
Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
Cc: Keir Fraser <keir@xxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/x86/hvm/emulate.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index 1eab7bd..0d748e7 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -665,7 +665,6 @@ static int __hvmemul_read(
p_data);
if ( rc != X86EMUL_OKAY || bytes == chunk )
return rc;
- addr += chunk;
off += chunk;
gpa += chunk;
p_data += chunk;
@@ -673,6 +672,8 @@ static int __hvmemul_read(
if ( bytes < chunk )
chunk = bytes;
}
+
+ return X86EMUL_UNHANDLEABLE;
}
if ( (seg != x86_seg_none) &&
@@ -809,7 +810,6 @@ static int hvmemul_write(
p_data);
if ( rc != X86EMUL_OKAY || bytes == chunk )
return rc;
- addr += chunk;
off += chunk;
gpa += chunk;
p_data += chunk;
@@ -817,6 +817,8 @@ static int hvmemul_write(
if ( bytes < chunk )
chunk = bytes;
}
+
+ return X86EMUL_UNHANDLEABLE;
}
if ( (seg != x86_seg_none) &&
--
1.7.10.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |