Description
In the Linux kernel, the following vulnerability has been resolved:

thunderbolt: Fix NULL dereference in tb_remove_work()

There is a slight race between tb_remove_work() and tb_domain_remove()
which leads to dereferencing a NULL tb->root_switch pointer inside
tb_free_unplugged_xdomains():

Thread A Thread B

tb_remove_work()
tb_domain_remove()
mutex_lock(&tb->lock)
tb_stop()
/* doesn't cancel a running callback */
cancel_delayed_work(&tcm->remove_work)
...
tb_switch_remove(tb->root_switch)
tb->root_switch = NULL
mutex_unlock(&tb->lock)
mutex_lock(&tb->lock)
...
/* without checking ->root_switch */
tb_free_unplugged_xdomains(tb->root_switch)
mutex_unlock(&tb->lock)

Commit a8937f35cf39 ("thunderbolt: Remove XDomain from the bus without
holding tb->lock") doesn't seem right to move tb_free_unplugged_xdomains()
out of the &tb->lock section and the check for tb->root_switch, in
particular. It states:

For this reason separate removing the XDomain from the topology data
structures (where we need the lock) from unregistering the device from
the bus (where remove callbacks of the drivers are being called).

tb_free_unplugged_xdomains() belongs to the former group of functions
requiring the lock. And it also calls tb_xdomain_remove() which should
only be called with &tb->lock held.

Found by Linux Verification Center (linuxtesting.org) with Svace static
analysis tool.
Published: 2026-10-18
Score: n/a
EPSS: n/a
KEV: No
Impact: Denial of Service (kernel crash)
Action: Apply patch
AI Analysis

Impact

A race condition between tb_remove_work() and tb_domain_remove() in the Linux kernel can lead to a NULL pointer dereference inside tb_free_unplugged_xdomains(), causing a kernel panic. The vulnerable code accesses tb->root_switch without verifying that it is non‑null, which would terminate the system with a core dump. The impact is a denial of service: a local attacker who can trigger the race can force the kernel to crash, potentially allowing disruption of the host or subsequent exploitation in environments that rely on uninterrupted kernel operation.

Affected Systems

The vulnerability exists in the generic Linux kernel. No specific kernel versions are listed in the data, so any installation that has not applied the patch commit a8937f35cf39 is potentially affected. The product is broadly available as Linux:Linux.

Risk and Exploitability

The CVSS score is not provided, and the EPSS score is unavailable, indicating limited data on exploitation likelihood. The CVE is not listed in the CISA KEV catalog, suggesting no known large‑scale exploitation incidents. However, because the flaw causes a kernel crash, an attacker who can induce the race (for example, by manipulating Thunderbolt devices or drivers) could immediately achieve a denial of service. The attack vector would be local and relies on interacting with the Thunderbolt subsystem; remote exploitation is unlikely without additional privileges or system access.

Generated by OpenCVE AI on October 18, 2026 at 22:16 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the kernel to a version that includes commit a8937f35cf39, which restores the lock around tb_free_unplugged_xdomains() and checks tb->root_switch before use
  • Configure Thunderbolt access controls in sysfs (e.g., via /sys/bus/thunderbolt/devices/*/allow_local) to limit untrusted device interactions
  • Disable Thunderbolt support entirely on hosts where it is unnecessary by adding the "no-thunderbolt" kernel boot parameter or removing the thunderbolt module

Generated by OpenCVE AI on October 18, 2026 at 22:16 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 18 Oct 2026 22:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-476

Sun, 18 Oct 2026 16:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: thunderbolt: Fix NULL dereference in tb_remove_work() There is a slight race between tb_remove_work() and tb_domain_remove() which leads to dereferencing a NULL tb->root_switch pointer inside tb_free_unplugged_xdomains(): Thread A Thread B tb_remove_work() tb_domain_remove() mutex_lock(&tb->lock) tb_stop() /* doesn't cancel a running callback */ cancel_delayed_work(&tcm->remove_work) ... tb_switch_remove(tb->root_switch) tb->root_switch = NULL mutex_unlock(&tb->lock) mutex_lock(&tb->lock) ... /* without checking ->root_switch */ tb_free_unplugged_xdomains(tb->root_switch) mutex_unlock(&tb->lock) Commit a8937f35cf39 ("thunderbolt: Remove XDomain from the bus without holding tb->lock") doesn't seem right to move tb_free_unplugged_xdomains() out of the &tb->lock section and the check for tb->root_switch, in particular. It states: For this reason separate removing the XDomain from the topology data structures (where we need the lock) from unregistering the device from the bus (where remove callbacks of the drivers are being called). tb_free_unplugged_xdomains() belongs to the former group of functions requiring the lock. And it also calls tb_xdomain_remove() which should only be called with &tb->lock held. Found by Linux Verification Center (linuxtesting.org) with Svace static analysis tool.
Title thunderbolt: Fix NULL dereference in tb_remove_work()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-18T15:46:02.231Z

Reserved: 2026-09-25T10:25:14.364Z

Link: CVE-2026-98688

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-18T16:17:22.207

Modified: 2026-10-18T16:17:22.207

Link: CVE-2026-98688

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-18T22:30:13Z

Weaknesses