aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-03-26 08:48:08 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-03-26 08:48:08 +0000
commitb8352255b3eac73ab2f15874575613603aa2e9c0 (patch)
tree448d31813c65f5fc24973f6b0e314a48a736ad84
parentdaf911baab4db150c38c2a5f379ec074b412c5e5 (diff)
downloadxen-b8352255b3eac73ab2f15874575613603aa2e9c0.tar.gz
xen-b8352255b3eac73ab2f15874575613603aa2e9c0.tar.bz2
xen-b8352255b3eac73ab2f15874575613603aa2e9c0.zip
shadow: Don't crash xen if hvm_read() from paged or shared memory
There are two new return cases from hvm_copy_from_guest_virt() to deal with paging or shared memory -- retry the emulation rather than crash. Signed-off-by: Steven Hand <steven.hand@cl.cam.ac.uk>
-rw-r--r--xen/arch/x86/mm/shadow/common.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 5e37bb01d4..36f92760cf 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -180,6 +180,9 @@ hvm_read(enum x86_segment seg,
case HVMCOPY_bad_gfn_to_mfn:
case HVMCOPY_unhandleable:
return X86EMUL_UNHANDLEABLE;
+ case HVMCOPY_gfn_paged_out:
+ case HVMCOPY_gfn_shared:
+ return X86EMUL_RETRY;
}
BUG();