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

usb: gadget: uvc: hold opts->lock across XU walks in uvc_function_bind

uvc_function_bind() walks &opts->extension_units twice without holding
opts->lock:

- directly, for the iExtension string-descriptor fixup loop;
- indirectly, four times via uvc_copy_descriptors() (once per speed),
where the helper iterates uvc->desc.extension_units (which aliases
&opts->extension_units) to size and emit XU descriptors.

The configfs side (uvcg_extension_make / uvcg_extension_drop, in
drivers/usb/gadget/function/uvc_configfs.c) takes opts->lock around its
list_add_tail / list_del operations. A privileged userspace process
that holds the configfs subtree open and writes the gadget UDC name
to bind the function while concurrently rmdir()'ing an extensions
subdir can race uvcg_extension_drop() against the bind-time list walks
and dereference a freed struct uvcg_extension.

Hold opts->lock from the start of the XU string-descriptor fixup
through the last uvc_copy_descriptors() call, releasing on the
descriptor-error path via a new error_unlock label that drops the
lock before falling through to the existing error label. This
matches the locking discipline of the configfs callbacks and removes
the only remaining unsynchronised reader of the XU list during bind.

Reachability: only privileged processes that can mount configfs and
write to gadget UDC files can trigger the race, so this is a
correctness fix rather than a security boundary.
Published: 2026-07-24
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel contains a race condition in the USB UVC gadget where the opts->lock mutex is not held while the extension unit list is traversed during function bind. This omission can allow a privileged userspace process to delete an extension subdirectory at the same time the kernel reads it, causing a use‑after‑free and potentially a kernel crash. The bug does not introduce a new privilege boundary and is therefore considered a correctness issue rather than a security flaw; however, a crash could lead to a denial‑of‑service.

Affected Systems

Affected systems are Linux kernel versions that have not yet incorporated the commit fixing this race condition. Kernels built from source or distributed by vendors that include the default UVC gadget and configfs interfaces may be vulnerable. No specific version range is explicitly enumerated; administrators should verify whether their kernel contains the commit that holds opts->lock during uvc_function_bind.

Risk and Exploitability

The EPSS score is reported as less than 1 %, indicating a very low probability of exploitation in the wild. The CVSS score of 5.5 indicates moderate severity. The defect is not listed in CISA’s KEV catalog. Exploitation requires root or CAP_SYS_ADMIN privileges to mount the configfs filesystem and manipulate the UVC gadget files, so an attacker would need elevated access. While a functional kernel crash can produce a denial‑of‑service, the risk is mitigated by the specialist permission model and low EPSS, making immediate patching the prudent action.

Generated by OpenCVE AI on August 13, 2026 at 11:02 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the commit which holds opts->lock during uvc_function_bind.
  • If an upgrade cannot be applied immediately, avoid mounting configfs or disable the UVC gadget until the kernel is updated.
  • Monitor system logs for kernel panics or Oops entries that may indicate a use‑after‑free and apply the patch as soon as possible.

Generated by OpenCVE AI on August 13, 2026 at 11:02 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Ubuntu USN Ubuntu USN USN-8618-1 Linux kernel vulnerabilities
History

Wed, 12 Aug 2026 19:30:00 +0000

Type Values Removed Values Added
Weaknesses NVD-CWE-noinfo
CPEs cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:*
Metrics cvssV3_1

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


Wed, 05 Aug 2026 01:45:00 +0000

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

Tue, 04 Aug 2026 15:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362

Wed, 29 Jul 2026 00:15:00 +0000


Mon, 27 Jul 2026 06:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362

Fri, 24 Jul 2026 18:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: usb: gadget: uvc: hold opts->lock across XU walks in uvc_function_bind uvc_function_bind() walks &opts->extension_units twice without holding opts->lock: - directly, for the iExtension string-descriptor fixup loop; - indirectly, four times via uvc_copy_descriptors() (once per speed), where the helper iterates uvc->desc.extension_units (which aliases &opts->extension_units) to size and emit XU descriptors. The configfs side (uvcg_extension_make / uvcg_extension_drop, in drivers/usb/gadget/function/uvc_configfs.c) takes opts->lock around its list_add_tail / list_del operations. A privileged userspace process that holds the configfs subtree open and writes the gadget UDC name to bind the function while concurrently rmdir()'ing an extensions subdir can race uvcg_extension_drop() against the bind-time list walks and dereference a freed struct uvcg_extension. Hold opts->lock from the start of the XU string-descriptor fixup through the last uvc_copy_descriptors() call, releasing on the descriptor-error path via a new error_unlock label that drops the lock before falling through to the existing error label. This matches the locking discipline of the configfs callbacks and removes the only remaining unsynchronised reader of the XU list during bind. Reachability: only privileged processes that can mount configfs and write to gadget UDC files can trigger the race, so this is a correctness fix rather than a security boundary.
Title usb: gadget: uvc: hold opts->lock across XU walks in uvc_function_bind
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-07-24T15:27:39.710Z

Reserved: 2026-07-19T15:36:31.771Z

Link: CVE-2026-64233

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Analyzed

Published: 2026-07-24T16:16:52.490

Modified: 2026-08-12T19:13:45.377

Link: CVE-2026-64233

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-07-24T00:00:00Z

Links: CVE-2026-64233 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-13T11:15:05Z

Weaknesses