vfio/pci: Release the VGA arbiter client on register_device() failure
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.261, 5.12, 5.13, 5.15.212, 6.1.178, and 4 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: vfio/pci: Release the VGA arbiter client on register_device() failure The re-order in the Fixes commit below displaced vfio_pci_vga_init() as the last failure point of what is now vfio_pci_core_register_device() without introducing an unwind for the VGA arbiter registration. In current kernels this is mostly benign because vfio_pci_set_decode() only uses pci_dev state, but the original failure path could leave a callback with a freed vdev cookie. The stale registration also becomes unsafe again once the callback follows drvdata to the vfio device. Add the required VGA unwind callout.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 87856f9af04eaacf9848710625a4ffee1d020fa9 · fixed in 0f2a35a0c7ea7da347b814750eaa78adf3582381; From 4aeec3984ddc853f7c65903bde472ffdef738bae · fixed in 8d65decde9afd2bd78bcfffdc0df73b82a0b5509; From 4aeec3984ddc853f7c65903bde472ffdef738bae · fixed in ef4c38d30b3744e89eb5048218904bb629ea8d47; From 4aeec3984ddc853f7c65903bde472ffdef738bae · fixed in 9e0a3f642e607848669235f5069f35640abbfc88; From 4aeec3984ddc853f7c65903bde472ffdef738bae · fixed in 42d758a09d2c46c42357ecde9a5492f015bde2e5; From 4aeec3984ddc853f7c65903bde472ffdef738bae · fixed in 52adb2dff7ce3d8430e2bdc5988b618a430def85; From 4aeec3984ddc853f7c65903bde472ffdef738bae · fixed in 278a5659c391fe5afe5f9ce1bad1fd24e90144f1; From 4aeec3984ddc853f7c65903bde472ffdef738bae · fixed in daedde7f024ecf88bc8e832ed40cf2c795f0796a; From 5.10.37 · fixed in 5.10.261; From 5.11.21 · fixed in 5.12; From 5.12.4 · fixed in 5.13
- Linux Linux
5.13
- KernelLinux
fixed in 5.10.261; From 5.11.0 · fixed in 5.15.212; From 5.13.0 · fixed in 6.1.178; From 5.16.0 · fixed in 6.6.145; From 6.2.0 · fixed in 6.12.96; From 6.7.0 · fixed in 6.18.39; From 6.13.0 · fixed in 7.1.4
References 8
git.kernel.org
- stable/c/0f2a35a0c7ea7da347b814750eaa78adf3582381
- stable/c/8d65decde9afd2bd78bcfffdc0df73b82a0b5509
- stable/c/ef4c38d30b3744e89eb5048218904bb629ea8d47
- stable/c/9e0a3f642e607848669235f5069f35640abbfc88
- stable/c/42d758a09d2c46c42357ecde9a5492f015bde2e5
- stable/c/52adb2dff7ce3d8430e2bdc5988b618a430def85
- stable/c/278a5659c391fe5afe5f9ce1bad1fd24e90144f1
- stable/c/daedde7f024ecf88bc8e832ed40cf2c795f0796a