Description
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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
22f7f35fd71b597a5d916e41d7646be6ee530c86 to < f50698c617350a6e2064dffd6cff3f391e142f55affected05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 to < aed24a3c63920539e9de7fbfe7929a2e7c888cd2affected05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 to < 431c6b872ba7fedcc5a3afb0ec3517db4d95d088affected05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 to < 54e5a4f7d83db4552d963d0785be32d9df680dcdaffected05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 to < bab26acebe55e8ad3ab545abda72faa7ca28c477affected05a2801d8b90c1b5159618d4bd3a3c65d60f3ff1 to < c38b1e19485aaa820e52cfe162525a8af67563daaffected
Linux Linux
Default version status: affected
6.3affected0 to < 6.3unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/f50698c617350a6e2064dffd6cff3f391e142f55 ↗
- https://git.kernel.org/stable/c/aed24a3c63920539e9de7fbfe7929a2e7c888cd2 ↗
- https://git.kernel.org/stable/c/431c6b872ba7fedcc5a3afb0ec3517db4d95d088 ↗
- https://git.kernel.org/stable/c/54e5a4f7d83db4552d963d0785be32d9df680dcd ↗
- https://git.kernel.org/stable/c/bab26acebe55e8ad3ab545abda72faa7ca28c477 ↗
- https://git.kernel.org/stable/c/c38b1e19485aaa820e52cfe162525a8af67563da ↗