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

usb: gadget: dummy_hcd: prevent fifo_req reuse during giveback

dummy_hcd embeds a single shared usb_request (dum->fifo_req) that the
"emulated single-request FIFO" fast-path in dummy_queue() reuses for
small IN transfers: it copies the caller's request into it
(req->req = *_req) and queues it, treating list_empty(&fifo_req.queue)
as "the slot is free".

The completion side (dummy_timer/transfer/nuke/dummy_dequeue) follows
the standard pattern: list_del_init(&req->queue) unlinks the request,
then the lock is dropped and usb_gadget_giveback_request() invokes
req->complete(). But list_del_init() makes fifo_req.queue look empty
*before* the completion callback returns, so a concurrent dummy_queue()
on another CPU sees the slot as free, reuses fifo_req and runs
req->req = *_req -- overwriting req->complete while dummy_timer is
mid-calling it. The indirect call then jumps to a clobbered pointer,
causing a general protection fault / page fault in dummy_timer
(syzkaller extid faf3a6cf579fc65591ca). The clobbering write is an
in-bounds memcpy on a live shared object, so KASAN cannot flag it.

Add a fifo_req_busy bit covering the shared request's whole lifetime:
set it in dummy_queue() when the FIFO fast-path takes fifo_req (making
it the fast-path guard, replacing the list_empty(&fifo_req.queue)
test), and clear it after the completion callback has returned, via a
dummy_giveback() helper used at all four gadget-request giveback
sites. The shared slot can no longer be reused until its completion
callback has finished.
Published: 2026-08-10
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In the Linux kernel’s dummy_hcd USB gadget driver, a race condition allows a single shared usb_request object (fifo_req) to be overwritten while its completion callback is still executing. The driver’s fast‑path reuses a single fifo_req slot for small IN transfers. During the giveback phase the request’s queue pointer is cleared before the completion routine returns, letting a concurrent queue operation on another CPU reuse fifo_req and overwrite its callback function pointer with data from a new request. When the kernel later attempts to invoke the overwritten callback, it jumps to a corrupted pointer, causing a general protection fault that brings the system down. The fix introduces a busy flag that protects the fifo_req slot until the completion callback has fully returned, preventing reuse during that window. The flaw is identified as CWE‑821.

Affected Systems

The flaw resides in the Linux kernel’s dummy_hcd module, part of the USB gadget framework used mainly for emulation and testing. All Linux kernel builds that include dummy_hcd are potentially affected; no particular version range was supplied. The vulnerability does not rely on a particular kernel configuration beyond the inclusion of the dummy_hcd driver.

Risk and Exploitability

The EPSS score of < 1% indicates that the likelihood of exploitation is very low. The flaw’s impact is severe because it causes a kernel crash that can lead to a denial‑of‑service. The CVSS score of 7.8 reflects this high severity. Since the flaw is not listed in the CISA KEV catalog, active exploitation may not yet be widespread. Exploitation would involve orchestrating concurrent gadget requests to trigger the race condition, and it likely requires local or privileged control over the USB gadget layer. The mitigation—preventing reuse of the shared fifo_req until completion—reduces the attack surface but does not eliminate the need for patching.

Generated by OpenCVE AI on August 14, 2026 at 01:57 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the dummy_hcd FIFO reuse fix.
  • If dummy_hcd is not required in production, disable the module by setting CONFIG_USB_DUMMY_HCD=n and rebuild the kernel.
  • When dummy_hcd must remain active (e.g., for development), isolate it in a dedicated test environment or container to contain potential crashes.

Generated by OpenCVE AI on August 14, 2026 at 01:57 UTC.

Tracking

Sign in to view the affected projects.

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

Wed, 19 Aug 2026 16:45:00 +0000


Thu, 13 Aug 2026 23:15:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

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


Thu, 13 Aug 2026 04:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-416

Wed, 12 Aug 2026 00:15:00 +0000


Mon, 10 Aug 2026 18:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-416

Mon, 10 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: usb: gadget: dummy_hcd: prevent fifo_req reuse during giveback dummy_hcd embeds a single shared usb_request (dum->fifo_req) that the "emulated single-request FIFO" fast-path in dummy_queue() reuses for small IN transfers: it copies the caller's request into it (req->req = *_req) and queues it, treating list_empty(&fifo_req.queue) as "the slot is free". The completion side (dummy_timer/transfer/nuke/dummy_dequeue) follows the standard pattern: list_del_init(&req->queue) unlinks the request, then the lock is dropped and usb_gadget_giveback_request() invokes req->complete(). But list_del_init() makes fifo_req.queue look empty *before* the completion callback returns, so a concurrent dummy_queue() on another CPU sees the slot as free, reuses fifo_req and runs req->req = *_req -- overwriting req->complete while dummy_timer is mid-calling it. The indirect call then jumps to a clobbered pointer, causing a general protection fault / page fault in dummy_timer (syzkaller extid faf3a6cf579fc65591ca). The clobbering write is an in-bounds memcpy on a live shared object, so KASAN cannot flag it. Add a fifo_req_busy bit covering the shared request's whole lifetime: set it in dummy_queue() when the FIFO fast-path takes fifo_req (making it the fast-path guard, replacing the list_empty(&fifo_req.queue) test), and clear it after the completion callback has returned, via a dummy_giveback() helper used at all four gadget-request giveback sites. The shared slot can no longer be reused until its completion callback has finished.
Title usb: gadget: dummy_hcd: prevent fifo_req reuse during giveback
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-08-19T16:34:31.156Z

Reserved: 2026-07-30T09:28:09.386Z

Link: CVE-2026-68370

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-10T13:20:29.790

Modified: 2026-08-19T17:20:46.603

Link: CVE-2026-68370

cve-icon Redhat

Severity :

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

Links: CVE-2026-68370 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-14T02:00:15Z

Weaknesses
  • CWE-821

    Incorrect Synchronization