diff options
author | Avi Kivity <avi@qumranet.com> | 2008-07-06 08:48:31 -0400 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-07-20 05:42:38 -0400 |
commit | ac9f6dc0db0b5582ebf8bb720d7c41c3d2159013 (patch) | |
tree | 74dc0ada1c80c45feb4f7104613826726aebdfc6 /arch/x86/kvm/x86.c | |
parent | 4e1096d27f3d095735c1c69c7b0a26a06a0d454e (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/x86/kvm/x86.c')
-rw-r--r-- | arch/x86/kvm/x86.c | 10 |
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); |