firmware: arm_scmi: Fix requested device removal race
- 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: Fix requested device removal race scmi_protocol_device_unrequest() drops scmi_requested_devices_mtx while notifying listeners but continues to retain the per-protocol list head. When two SCMI drivers for the same protocol unregister concurrently, one thread can remove the final request and free the list head while the other is running its notifier. The latter then dereferences the freed list head after reacquiring the mutex and can free it a second time. Complete the list and IDR updates, including freeing an empty list head, before dropping the mutex. Keep the blocking notifier outside the critical section and retain only the detached request across the callback.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From d3cd7c525fd2ecce3a6c963f314969a54783d211 · fixed in 2ff7713b7308cd6bea3328f7cd750b5eaab42af3; From d3cd7c525fd2ecce3a6c963f314969a54783d211 · fixed in 1c35915eaaa81a12340c838c5c2ccb02be2194c3; From d3cd7c525fd2ecce3a6c963f314969a54783d211 · fixed in c3d4ef1c0ca6917aad6f1093b49f3932944a8c19; From d3cd7c525fd2ecce3a6c963f314969a54783d211 · fixed in 21d35c5f46e99e9047bb9ded3ecb5ab440dd75b3; From d3cd7c525fd2ecce3a6c963f314969a54783d211 · fixed in 2c4097e6c4aed276c5e9ec2ab331ab397ea780bf
- 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