UBUNTU-CVE-2026-89899: High severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: media: cec: disable delayed work before freeing an interrupted transmit cectransmitmsgfh() drops adap->lock to wait for a blocking transmit in waitforcompletionkillable(). If that wait is interrupted by a signal, canceldelayedworksync() can run before the CEC kthread arms the reply timeout via scheduledelayedwork(&data->work) in cectransmitdonets(). The work is then armed after the cancel, and the data is freed with its delayedwork still pending: ODEBUG: free active (active state 0) object: ... hint: cecwaittimeout Use disabledelayedworksync(): it cancels the work and disables it, so the later scheduledelayedwork() becomes a no-op and the work cannot be re-armed. The data is freed right after, so it need not be re-enabled.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In the Linux kernel CEC transmit path, replace cancel_delayed_work_sync() with disable_delayed_work_sync() when handling an interrupted transmit, so the delayed work is canceled and disabled and a later schedule_delayed_work() call cannot re-arm it before the data is freed.