ALSA: hda/cs35l41: Fix firmware load work teardown
- 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.160, 6.12.97, 6.18.39, 7.1.4
- 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: ALSA: hda/cs35l41: Fix firmware load work teardown cs35l41_hda creates ALSA controls whose private data points at the cs35l41_hda object. The firmware load control can also queue fw_load_work. Those controls are not removed on component unbind, and device remove only cancels fw_load_work through cs35l41_remove_dsp(). That helper is skipped when halo_initialized is false. With firmware_autostart disabled, a firmware load can be requested before the DSP has been initialized. If the component or device is removed before the queued work runs, the worker can run after teardown and dereference driver state that is no longer valid. Track the created controls and remove them on unbind so no new control callback can reach the driver data or queue more work. Then cancel fw_load_work to drain any request that was already queued. Also cancel the work unconditionally during device remove before runtime PM teardown.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 47ceabd99a28399f8971f4ca0a37ebc0a21dd2a8 · fixed in 3e339c88b8c3044919fd1936a8b23124285d0de6; From 47ceabd99a28399f8971f4ca0a37ebc0a21dd2a8 · fixed in 8947215c0136c9d905e4a46d824824f8b48a2e5b; From 47ceabd99a28399f8971f4ca0a37ebc0a21dd2a8 · fixed in ce0a903d0591e3e2c790c5b628802b08d1b287cc; From 47ceabd99a28399f8971f4ca0a37ebc0a21dd2a8 · fixed in d6a40a4d083ef74d00c8f9516cb5ff07ac70720b; From 47ceabd99a28399f8971f4ca0a37ebc0a21dd2a8 · fixed in b65020d5398f499c09498c9786dba6d67ae57664
- Linux Linux
6.0
- KernelLinux
From 6.0.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.97; From 6.13.0 · fixed in 6.18.39; From 6.19.0 · fixed in 7.1.4