vfio/pci: Lock external INTx masking ops
- 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.4.274, 5.10.215, 5.15.154, 6.1.84, 6.6.24, and 2 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: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: vfio/pci: Lock external INTx masking ops Mask operations through config space changes to DisINTx may race INTx configuration changes via ioctl. Create wrappers that add locking for paths outside of the core interrupt code. In particular, irq_type is updated holding igate, therefore testing is_intx() requires holding igate. For example clearing DisINTx from config space can otherwise race changes of the interrupt configuration. This aligns interfaces which may trigger the INTx eventfd into two camps, one side serialized by igate and the other only enabled while INTx is configured. A subsequent patch introduces synchronization for the latter flows.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in 1e71b6449d55179170efc8dee8664510bb813b42; From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in 3dd9be6cb55e0f47544e7cdda486413f7134e3b3; From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in ec73e079729258a05452356cf6d098bf1504d5a6; From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in 3fe0ac10bd117df847c93408a9d428a453cd60e5; From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in 04a4a017b9ffd7b0f427b8c376688d14cb614651; From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in 6fe478d855b20ac1eb5da724afe16af5a2aaaa40; From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in 03505e3344b0576fd619416793a31eae9c5b73bf; From 89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 · fixed in 810cd4bb53456d0503cc4e7934e063835152c1b7
- Linux Linux
3.6
- KernelLinux
From 3.6.0 · fixed in 5.4.274; From 5.5.0 · fixed in 5.10.215; From 5.11.0 · fixed in 5.15.154; From 5.16.0 · fixed in 6.1.84; From 6.2.0 · fixed in 6.6.24; From 6.7.0 · fixed in 6.7.12; From 6.8.0 · fixed in 6.8.3
References 8
git.kernel.org
- stable/c/1e71b6449d55179170efc8dee8664510bb813b42
- stable/c/3dd9be6cb55e0f47544e7cdda486413f7134e3b3
- stable/c/ec73e079729258a05452356cf6d098bf1504d5a6
- stable/c/3fe0ac10bd117df847c93408a9d428a453cd60e5
- stable/c/04a4a017b9ffd7b0f427b8c376688d14cb614651
- stable/c/6fe478d855b20ac1eb5da724afe16af5a2aaaa40
- stable/c/03505e3344b0576fd619416793a31eae9c5b73bf
- stable/c/810cd4bb53456d0503cc4e7934e063835152c1b7