CVE-2026-74441

Source
https://cve.org/CVERecord?id=CVE-2026-74441
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74441.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-74441
Downstream
Published
2026-08-15T12:26:49.359Z
Modified
2026-08-18T03:30:56.635180879Z
Summary
usb: typec: ucsi: Fix race condition and ordering in port unregistration
Details

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

usb: typec: ucsi: Fix race condition and ordering in port unregistration

A synchronization issue exists during port unregistration where pending partner work items can race against workqueue destruction, leading to use-after-free conditions:

crosecucsi crosecucsi.3.auto: error -ETIMEDOUT: PPM init failed BUG: kernel NULL pointer dereference, address: 0000000000000000 RIP: 0010:__queue_work+0x83/0x4a0 Call Trace: <IRQ> __cfidelayedworktimerfn+0x10/0x10 runtimersoftirq+0x3b6/0xbd0 schedclockcpu+0xc/0x110 irqexitrcu+0x18d/0x330 fredsysvecapictimerinterrupt+0x5e/0x80

Fix this by ensuring strict ordering and proper serialization during teardown:

  1. Move ucsiunregisterpartner() to the beginning of the teardown sequence and protect it under the connector mutex lock.
  2. Ensure all pending partner tasks are explicitly flushed and finished before the workqueue is destroyed.
  3. Switch from moddelayedwork() to a canceldelayedwork() and queuedelayedwork() sequence. This guarantees that items currently marked as pending won't be scheduled an additional time, preventing a double release of resources which leads to the following crash:

    Oops: general protection fault, probably for non-canonical address 0xdead000000000122: 0000 [#1] SMP NOPTI Workqueue: crosecucsi.3.auto-con2 ucsipollworker RIP: 0010:ucsipollworker+0x65/0x1e0 Call Trace: <TASK> processscheduledworks+0x218/0x6d0 worker_thread+0x188/0x3f0 __cfiworkerthread+0x10/0x10 kthread+0x226/0x2a0

To ensure these rules are applied identically across both the normal teardown and the ucsiinit() error paths, consolidate the cleanup logic into a new helper, ucsiunregister_port().

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/74xxx/CVE-2026-74441.json"
}
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
b9aa02ca39a49740926c2c450a1505a4a0f8954a
Fixed
07f8aaffee705e552c1f723ac8bf7eb137ad59c2
Fixed
11483d80267db97fbe49f2df66385434256cc3b0
Fixed
3f7b3728dd9011c915cbeaea77274ebe8366550d
Fixed
bc7a0f721123ea260a42f1ded06dab844ba49434
Fixed
7aa7d4bf9d3fa9a6a47b640ad103ab433b7ff261

Database specific

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

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.6.151
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.103
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.44
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.8

Database specific

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