CVE-2026-64347CWE-667

CVE-2026-64347

Medium · published July 25, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
0.6
In the wild
Unconfirmed
What it is

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

usb: gadget: composite: fix dead empty check in the USB_DT_OTG handler

The OTG branch of composite_setup() falls back to the first

configuration when none is selected:

if (cdev->config)

config = cdev->config;

else

config = list_first_entry(&cdev->configs,

struct usb_configuration, list);

if (!config)

goto done;

...

memcpy(req->buf, config->descriptors[0], value);

list_first_entry() never returns NULL. On an empty list it returns

container_of() of the list head. So the "if (!config)" check is dead.

When cdev->configs is empty, config points at the head inside struct

usb_composite_dev. config->descriptors[0] reads whatever sits at that

offset. The memcpy copies up to w_length bytes of it into the response

buffer.

cdev->configs can be empty in two cases. One is a teardown race on

gadget unbind with a control transfer in flight. The other is a driver

that sets is_otg before it adds a config. A reproducer that holds

cdev->configs empty triggers a KASAN fault in this branch.

Use list_first_entry_or_null() so the existing check does its job.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00095 · 0.6th percentile
Weakness
CWE-667 · Improper Locking
Published
2026-07-25T14:17Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 4.3, < 5.10.2615.10.261
linux/linux_kernel≥ 5.11, < 5.15.2125.15.212
linux/linux_kernel≥ 5.16, < 6.1.1786.1.178
linux/linux_kernel≥ 6.2, < 6.6.1456.6.145
linux/linux_kernel≥ 6.7, < 6.12.966.12.96
linux/linux_kernel≥ 6.13, < 6.18.396.18.39
linux/linux_kernel≥ 6.19, < 7.1.47.1.4
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (8)
EPSS history
Timeline
  • 25 JUL 08:50Z
    usb: gadget: composite: fix dead empty check in the USB_DT_OTG handler
    cvelistv5