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

usb: cdns3: fix use-after-free in cdns3_gadget_exit()

cdns3_gadget_start() arms two works on system_freezable_wq:
pending_status_wq for the deferred ep0 status stage and aligned_buf_wq
for realigned request buffers. Both handlers use the cdns3_device the
works are embedded in, and cdns3_pending_setup_status_handler() also
calls the ep0 request completion.

cdns3_gadget_exit() does not wait for these works. It frees all
endpoints and aligned buffers and drops the last reference to the
gadget device, which frees priv_dev, so a work queued before the exit
can run after the free.

Fix this by waiting for both works after the gadget driver is unbound
and the IRQ is freed, when no new work can be queued, and before the
endpoints and buffers are released.

This issue was found by an in-house static analysis tool.
Published: 2026-10-18
Score: 4.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Local code execution
Action: Patch
AI Analysis

Impact

The defect originates in the Linux USB composite device driver cdns3. A work queue item scheduled by cdns3_gadget_start() may execute after cdns3_gadget_exit() has freed the underlying gadget device and its private data. The resulting use‑after‑free can corrupt kernel memory or lead to arbitrary kernel code execution. The bug is identified as CWE‑825.

Affected Systems

All variants of the Linux kernel that compile the cdns3 USB gadget driver are affected. No specific version range is listed in the report, so any build that contains the vulnerable code before the commit that introduces the fix is vulnerable.

Risk and Exploitability

The CVSS score is 4.1 and the EPSS score is < 1%, indicating a low likelihood of exploitation. The flaw is only exploitable when a USB gadget driver is loaded and a work item can be scheduled and run after the driver is unbound. The vulnerability is local to the host running the kernel, and no remote exploitation path has been documented. The flaw is not listed in the CISA KEV catalog.

Generated by OpenCVE AI on October 23, 2026 at 21:59 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the patch for cdns3_gadget_exit() shown in the upstream commit.
  • If an upgrade is not immediately possible, unload or disable the cdns3 USB gadget driver to prevent the vulnerable work queue items from running.
  • Ensure that systems using the cdns3 USB composite driver are isolated from untrusted devices that could trigger the driver to start and exit.

Generated by OpenCVE AI on October 23, 2026 at 21:59 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4850-1 linux-6.12 security update
History

Fri, 30 Oct 2026 12:45:00 +0000


Fri, 23 Oct 2026 20:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Fri, 23 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-825
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.1, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Wed, 21 Oct 2026 13:15:00 +0000


Sun, 18 Oct 2026 20:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

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

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: usb: cdns3: fix use-after-free in cdns3_gadget_exit() cdns3_gadget_start() arms two works on system_freezable_wq: pending_status_wq for the deferred ep0 status stage and aligned_buf_wq for realigned request buffers. Both handlers use the cdns3_device the works are embedded in, and cdns3_pending_setup_status_handler() also calls the ep0 request completion. cdns3_gadget_exit() does not wait for these works. It frees all endpoints and aligned buffers and drops the last reference to the gadget device, which frees priv_dev, so a work queued before the exit can run after the free. Fix this by waiting for both works after the gadget driver is unbound and the IRQ is freed, when no new work can be queued, and before the endpoints and buffers are released. This issue was found by an in-house static analysis tool.
Title usb: cdns3: fix use-after-free in cdns3_gadget_exit()
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-30T12:39:27.986Z

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

Link: CVE-2026-98757

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

Modified: 2026-10-30T13:21:25.223

Link: CVE-2026-98757

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-18T00:00:00Z

Links: CVE-2026-98757 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T22:00:28Z

Weaknesses
  • CWE-825

    Expired Pointer Dereference