mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 17:42:03 +02:00
KVM: s390: Restore sigset on error path
kvm_sigset_activate() installs vcpu->sigset via sigprocmask() and
stashes the caller's mask in current->real_blocked; only
kvm_sigset_deactivate() restores it.
For KVM_RUN on a STOPPED vcpu the error path will not restore the
userspace mask. Re-arrange the error handling to also restore the
signal mask.
Fixes: 6352e4d2dd ("KVM: s390: implement KVM_(S|G)ET_MP_STATE for user space state control")
Cc: stable@vger.kernel.org
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Message-ID: <20260811153738.206885-5-borntraeger@linux.ibm.com>
This commit is contained in:
parent
1e3c8e7b34
commit
c44d36d8e6
|
|
@ -5073,7 +5073,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
|
|||
pr_err_ratelimited("can't run stopped vcpu %d\n",
|
||||
vcpu->vcpu_id);
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
goto out_sigset;
|
||||
}
|
||||
|
||||
kernel_fpu_begin(&fpu, KERNEL_FPC | KERNEL_VXR);
|
||||
|
|
@ -5103,9 +5103,11 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
|
|||
store_regs(vcpu);
|
||||
kernel_fpu_end(&fpu, KERNEL_FPC | KERNEL_VXR);
|
||||
|
||||
vcpu->stat.exit_userspace++;
|
||||
|
||||
out_sigset:
|
||||
kvm_sigset_deactivate(vcpu);
|
||||
|
||||
vcpu->stat.exit_userspace++;
|
||||
out:
|
||||
vcpu_put(vcpu);
|
||||
return rc;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user