CVE-2026-68372

Source
https://cve.org/CVERecord?id=CVE-2026-68372
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-68372.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-68372
Downstream
Published
2026-08-10T12:03:50.292Z
Modified
2026-08-12T04:18:48.310339788Z
Summary
usb: core: port: Deattach Type-C connector on component unbind
Details

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

usb: core: port: Deattach Type-C connector on component unbind

connectorunbind() is the mirror of connectorbind(), but it is missing the symmetric call to typecdeattach() that connectorbind() makes via:

if (port_dev->child)
    typec_attach(port_dev->connector, &port_dev->child->dev);

When a Thunderbolt dock is unplugged, two teardown paths race:

  1. The component framework calls connectorunbind() first, which sets portdev->connector = NULL without calling typecdeattach(). This leaves port->usb2dev/port->usb3dev in struct typecport pointing at the USB device that is about to be freed.

  2. usbdisconnect() then calls typecdeattach(portdev->connector, ...), but portdev->connector is already NULL, so the call is a no-op and port->usb2_dev is never cleared.

  3. Concurrently, UCSI detects a PD partner-disconnect event and calls typecunregisterpartner(), which reads port->usb2dev (now a dangling pointer to freed memory) and passes it to typecpartnerunlinkdevice() -> sysfsremovelink() -> dev_name() on the freed device, corrupting the typec/UCSI partner state.

This corruption leaves the Thunderbolt tunnel in an inconsistent state on the next dock hot-plug. On affected hardware the dock's I225/igc NIC fails to enumerate: AER fires a slot reset while the igc driver is still initialising ("PCIe link lost"), and the subsequent igcreset attempt hits igcrd32 on an already-detached device:

igc 0000:2e:00.0 eth0: PCIe link lost, device now detached
igc: Failed to read reg 0x0!
WARNING: CPU: 9 PID: 129 at drivers/net/ethernet/intel/igc/igc_main.c:7005
         igc_rd32+0xa4/0xc0 [igc]
Call Trace:
 igc_disable_pcie_master+0x16/0xa0 [igc]
 igc_reset_hw_base+0x14/0x170 [igc]
 igc_reset+0x63/0x110 [igc]
 igc_io_slot_reset+0x9e/0xd0 [igc]
 report_slot_reset+0x5d/0xc0
 pcie_do_recovery+0x209/0x400
 aer_isr_one_error_type+0x235/0x430
 aer_isr+0x4e/0x80
 irq_thread+0xf4/0x1f0
  1. UCSI later handles the PD partner-disconnect and calls typecunregisterpartner(), which still sees the stale port->usb2_dev and tries to remove its sysfs link a second time:

    kernfs: can not remove 'typec', no directory WARNING: CPU: 6 PID: 55 at fs/kernfs/dir.c:1706 kernfsremovebynamens+0xe9/0xf0 Workqueue: events ucsihandleconnectorchange [typecucsi] Call Trace: sysfsremovelink+0x19/0x50 typecunregisterpartner+0x6e/0x120 [typec] ucsiunregisterpartner+0x107/0x150 [typecucsi] ucsihandleconnectorchange+0x3ec/0x490 [typecucsi] processonework+0x18e/0x3e0 workerthread+0x2e3/0x420 kthread+0x10a/0x230 retfromfork+0x121/0x140 retfromfork_asm+0x1a/0x30

    With worse timing the same stale pointer is dereferenced after the backing memory is freed, turning the warning into a use-after-free.

Fix the asymmetry: call typecdeattach() before clearing portdev->connector, matching what connectorbind() does on the bind side. typecpartnerdeattach() is already protected by port->partnerlinklock, so it serialises safely with the concurrent typecunregister_partner() path.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68372.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
11110783f5ea866318831a56353c6f1c3fc0d8ed
Fixed
78d361e60caf1999d51bda0e1b1004f5d39fcfbc
Fixed
7714fb896ed308cf13d32d317040adc4f200b8e4
Fixed
e00109b5adf71635919248e9ab6300a662e6a3e8
Fixed
e0b291fe117964037e0ba382eff4bb365d531c3a

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-68372.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.101
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.42
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.6

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-68372.json"