CVE-2026-64347 Details
Description
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.
A vulnerability in the Linux kernel's USB gadget composite driver has been fixed. The issue arose in the USB On-The-Go (OTG) handling, where a dead check for an empty configuration list could lead to unintended behavior. When no configuration is selected, the code attempts to fall back to the first available configuration. However, if the configuration list is empty, the fallback mechanism fails, leaving the handler with invalid data. This flaw could be exploited in scenarios where a driver sets the OTG flag before adding a configuration, or during a teardown process when configurations are being unbound, potentially leading to a use-after-free condition. A reproducer for this vulnerability has been identified, which triggers a fault by keeping the configuration list empty,
The vulnerability has been addressed by modifying the code to use a safer method for retrieving the first configuration entry, which properly handles empty lists. Users should update to the latest version of the Linux kernel where this fix has been applied.
Metrics
CVSS 4.0 Severity and Vector Strings:
No CVSS 4.0 data is available for this CVE.
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
No SSVC data is available for this CVE.
References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://git.kernel.org/stable/c/01feaf024f29618d5ffa7ab0fd858e0579dcbf7b | kernel.org | Patch |
| https://git.kernel.org/stable/c/2454264b2ab4cf0055c0bfd39e79f830452bd0db | kernel.org | Patch |
| https://git.kernel.org/stable/c/56add2b9b2e89ec61c0761165d758f73004fdfdf | kernel.org | Patch |
| https://git.kernel.org/stable/c/8ac463fe6c0f85bdb1ce8c30e8c9e060802e4483 | kernel.org | Patch |
| https://git.kernel.org/stable/c/91b3ecd34b60f950c50c560974945b6596a6f207 | kernel.org | Patch |
| https://git.kernel.org/stable/c/d3e72cfef2e38bd588055739a8100d14f9773b17 | kernel.org | Patch |
| https://git.kernel.org/stable/c/f8f680609c2b3ab795ffcd6f21585b6dfc46d395 | kernel.org | Patch |
| https://git.kernel.org/stable/c/fcb21bf747640c9d6bd1eda9da85420f076d59c1 | kernel.org | Patch |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-667 | Improper Locking | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| linux linux kernel | >= 4.3, < 5.10.261 >= 5.11, < 5.15.212 >= 5.16, < 6.1.178 >= 6.2, < 6.6.145 >= 6.7, < 6.12.96 >= 6.13, < 6.18.39 >= 6.19, < 7.1.4 7.2 rc1 7.2 rc2 |
CPE
Remediation
| |
Change History
3 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Sep 3, 2026 | Initial Analysis | [email protected] |
| Aug 17, 2026 | CVE Modified | kernel.org |
| Jul 25, 2026 | New CVE Received | kernel.org |