aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/domain.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2013-05-02 16:38:30 +0200
committerJan Beulich <jbeulich@suse.com>2013-05-02 16:38:30 +0200
commit99d2b149915010e986f4d8778708c5891e7b4635 (patch)
treef53f0136c9d72ceaca862d9ff9afafedd879fcb5 /xen/common/domain.c
parent4939f9a6dee4280f38730fd3066e5dce353112f6 (diff)
downloadxen-99d2b149915010e986f4d8778708c5891e7b4635.tar.gz
xen-99d2b149915010e986f4d8778708c5891e7b4635.tar.bz2
xen-99d2b149915010e986f4d8778708c5891e7b4635.zip
x86: make arch_set_info_guest() preemptible
.. as the root page table validation (and the dropping of an eventual old one) can require meaningful amounts of time. This is part of CVE-2013-1918 / XSA-45. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'xen/common/domain.c')
-rw-r--r--xen/common/domain.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 7cca65507d..b5d44d466b 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -938,6 +938,11 @@ long do_vcpu_op(int cmd, int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
domain_unlock(d);
free_vcpu_guest_context(ctxt);
+
+ if ( rc == -EAGAIN )
+ rc = hypercall_create_continuation(__HYPERVISOR_vcpu_op, "iih",
+ cmd, vcpuid, arg);
+
break;
case VCPUOP_up: {