media: cec: disable delayed work before freeing an interrupted transmit
- 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 4.19, 4.20, 6.12.110, 6.18.51, 7.2.5
- 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: media: cec: disable delayed work before freeing an interrupted transmit cec_transmit_msg_fh() drops adap->lock to wait for a blocking transmit in wait_for_completion_killable(). If that wait is interrupted by a signal, cancel_delayed_work_sync() can run before the CEC kthread arms the reply timeout via schedule_delayed_work(&data->work) in cec_transmit_done_ts(). The work is then armed after the cancel, and the data is freed with its delayed_work still pending: ODEBUG: free active (active state 0) object: ... hint: cec_wait_timeout Use disable_delayed_work_sync(): it cancels the work and disables it, so the later schedule_delayed_work() becomes a no-op and the work cannot be re-armed. The data is freed right after, so it need not be re-enabled.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 490d84f6d73c12f4204241cff8651eed60aae914 · fixed in 9a951931d4b4084acd64fa55fc3672a9da45ddf9; From 490d84f6d73c12f4204241cff8651eed60aae914 · fixed in a3adb63b121937b97f7fdc51e96564c7c799538b; From 490d84f6d73c12f4204241cff8651eed60aae914 · fixed in 9c6ceb0949227c1f0cf0e19393daec72d9889871; From 490d84f6d73c12f4204241cff8651eed60aae914 · fixed in 0fbd5c2327020858c45b2d1c65775d64cdeca523; From 4.18.19 · fixed in 4.19; From 4.19.2 · fixed in 4.20
- Linux Linux
4.20
- KernelLinux
From 4.20.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.51; From 6.19.0 · fixed in 7.2.5