CVE-2026-89737: usb: typec: thunderbolt: Disable work before freeing tbt on remove
In the Linux kernel, the following vulnerability has been resolved:
usb: typec: thunderbolt: Disable work before freeing tbt on remove
tbtaltmoderemove() drops the plug and cable references without draining tbt->work. The work function dereferences those references, and can also requeue itself in its error path. The VDM callbacks can queue the same work item.
Disable and drain tbt->work before dropping the references. This waits for an existing invocation and prevents subsequent schedulework() calls from queueing it during teardown.
This issue was found by an in-house static analysis tool and confirmed by manual code review.
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 - Configuration
In tbt_altmode_remove(), disable tbt->work before freeing tbt; wait for any existing invocation to finish and prevent subsequent schedule_work() calls from queueing it during teardown.
Linux kernel USB Type-C Thunderbolt tbt->work teardown handling = disable and drain before freeing tbt
Event History
Frequently Asked Questions
Under what circumstances can this issue be triggered?
The issue is associated with removal of a Thunderbolt Type-C alternate-mode device. During teardown, pending or newly queued tbt->work can run after plug and cable references have been dropped; VDM callbacks and an error path can queue or requeue that work.
What is the mitigation in the resolved kernel code?
The fix disables and drains tbt->work before dropping the plug and cable references. This waits for an active work invocation to finish and prevents schedule_work() from queuing further executions during teardown.
How was this vulnerability identified?
It was found by an in-house static analysis tool and confirmed through manual code review.