firmware: arm_scmi: Avoid IDR updates while cleaning channels
- 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 6.6.157, 6.12.110, 6.18.52, 7.2.6
- 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
Summary
In the Linux kernel, the following vulnerability has been resolved: firmware: arm_scmi: Avoid IDR updates while cleaning channels scmi_cleanup_channels() walks the TX/RX channel IDRs with idr_for_each() to free transport resources and destroy the dedicated transport devices before calling idr_destroy(). The destroy callback removed each entry from the same IDR being walked. That is not needed for this cleanup path, and it is unsafe because idr_for_each() has not advanced its radix-tree iterator while the callback is running. Removing the current entry from the callback can invalidate the iterator state. The callback also cannot be protected by rcu_read_lock(), because scmi_device_destroy() may sleep. Leave IDR teardown to the following idr_destroy() call and keep the callback limited to device destruction.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 · fixed in aed24a3c63920539e9de7fbfe7929a2e7c888cd2; From 05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 · fixed in 431c6b872ba7fedcc5a3afb0ec3517db4d95d088; From 05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 · fixed in 54e5a4f7d83db4552d963d0785be32d9df680dcd; From 05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 · fixed in bab26acebe55e8ad3ab545abda72faa7ca28c477; From 05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 · fixed in c38b1e19485aaa820e52cfe162525a8af67563da
- Linux Linux
6.3
- KernelLinux
From 6.3.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.6