Linux: KVM: s390: Fix IRQ injection with SIGP Stop and Store Status
What fixes it
- 3bd77c59576b1d447fd56cc689ae9523a334b924LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
KVM: s390: Fix IRQ injection with SIGP Stop and Store Status
When __inject_sigp_stop() is called for a Stop and Store Status operation, if the vCPU is running, the interrupt is marked as pending and the status is stored by the thread performing the KVM_RUN IOCTL.
If the vCPU is already stopped, the status is stored immediately.
Storing the status means writing into userspace, which might fault, and __inject_sigp_stop() is called from do_inject_vcpu() which in turn is always called holding a spinlock, which is obviously an issue.
Fix this by returning -EWOULDBLOCK from __inject_sigp_stop(), and adding a bool flag to indicate whether a store status is needed. The callers of do_inject_vcpu() are modified to pass the pointer to the bool flag; whenever a Store Status operation is needed, the callers can now perform it outside the spinlock.
Opportunistically refactor kvm_s390_set_irq_state() to use scoped_guard() and __free().
[ Added Fixes tag while picking -- Claudio ]
Text from CVE List
Affected versions 10
- Linuxaffected: 6cddd432e3da5e25eccbc13844d03c871674a62e before 3bd77c59576b1d447fd56cc689ae9523a334b924CVE List
- Linuxaffected: 6cddd432e3da5e25eccbc13844d03c871674a62e before a379ac504fcb8c6fc2aa36203f5489b9581eb2e0CVE List
- Linuxaffected: 6cddd432e3da5e25eccbc13844d03c871674a62e before d0e3bf633f0585a0c2c2105ea7723777d764fae5CVE List
- Linuxaffected: 6cddd432e3da5e25eccbc13844d03c871674a62e before d343407b728a80b74be3c24b59f15e60289ea527CVE List
- Linuxaffected: 4.0CVE List
- Linuxunaffected: all versions before 4.0CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 4
- git.kernel.org/stable/c/3bd77c59576b1d447fd56cc689ae9523a334b924Referencevia CVE List
- git.kernel.org/stable/c/a379ac504fcb8c6fc2aa36203f5489b9581eb2e0Referencevia CVE List
- git.kernel.org/stable/c/d0e3bf633f0585a0c2c2105ea7723777d764fae5Referencevia CVE List
- git.kernel.org/stable/c/d343407b728a80b74be3c24b59f15e60289ea527Referencevia CVE List