aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2008-07-06 08:48:31 -0400
committerAvi Kivity <avi@qumranet.com>2008-07-20 05:42:38 -0400
commitac9f6dc0db0b5582ebf8bb720d7c41c3d2159013 (patch)
tree74dc0ada1c80c45feb4f7104613826726aebdfc6 /arch
parent4e1096d27f3d095735c1c69c7b0a26a06a0d454e (diff)
KVM: Apply the kernel sigmask to vcpus blocked due to being uninitialized
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/x86.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 55906e4c4676..89fc8565edee 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2958,15 +2958,15 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
2958 2958
2959 vcpu_load(vcpu); 2959 vcpu_load(vcpu);
2960 2960
2961 if (vcpu->sigset_active)
2962 sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved);
2963
2961 if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) { 2964 if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) {
2962 kvm_vcpu_block(vcpu); 2965 kvm_vcpu_block(vcpu);
2963 vcpu_put(vcpu); 2966 r = -EAGAIN;
2964 return -EAGAIN; 2967 goto out;
2965 } 2968 }
2966 2969
2967 if (vcpu->sigset_active)
2968 sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved);
2969
2970 /* re-sync apic's tpr */ 2970 /* re-sync apic's tpr */
2971 if (!irqchip_in_kernel(vcpu->kvm)) 2971 if (!irqchip_in_kernel(vcpu->kvm))
2972 kvm_set_cr8(vcpu, kvm_run->cr8); 2972 kvm_set_cr8(vcpu, kvm_run->cr8);