usb: gadget: udc: Fix use-after-free in gadget_match_driver
Summary
| CVE | CVE-2026-64346 |
|---|---|
| State | PUBLISHED |
| Assigner | Linux |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2026-07-25 10:17:16 UTC |
| Updated | 2026-07-27 05:16:42 UTC |
| Description | In the Linux kernel, the following vulnerability has been resolved: usb: gadget: udc: Fix use-after-free in gadget_match_driver The udc structure acts as the management structure for the gadget, but their lifecycles are decoupled. A race condition exists where usb_del_gadget() frees the udc memory (e.g., via mode-switch work) while gadget_match_driver() concurrently accesses the freed udc memory (e.g., via configfs), causing a Use-After-Free (UAF) that triggers a NULL pointer dereference when the freed memory is zeroed: [39430.908615][ T1171] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 [39430.911397][ T1171] pc : __pi_strcmp+0x20/0x140 [39430.911441][ T1171] lr : gadget_match_driver+0x34/0x60 ... [39430.911890][ T1171] usb_gadget_register_driver_owner+0x50/0xf8 [39430.911910][ T1171] gadget_dev_desc_UDC_store+0xf4/0x140 [39430.931308][ T1171] configfs_write_iter+0xec/0x134 [39430.957058][ T1171] Workqueue: events_freezable __dwc3_set_mode [39430.957287][ T1171] dwc3_gadget_exit+0x34/0x8c [39430.957304][ T1171] __dwc3_set_mode+0xc0/0x664 Fix this by ensuring the udc structure remains allocated until the gadget is released. To achieve this, introduce a new usb_gadget_release() routine to the core. When the gadget is added, usb_add_gadget() stores the gadget's release routine in the udc structure and takes a reference to the udc. When the gadget is released, usb_gadget_release() drops the reference to the udc and then calls the gadget's release routine. |
Risk And Classification
EPSS: 0.002060000 probability, percentile 0.107990000 (date 2026-07-27)
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|---|---|---|---|
| CNA | Linux | Linux | affected fc274c1e997314bf47f6a62c79b5d7e554ed59c4 50eeb8e8a4f389efc91b93cff14a683e714ec194 git | Not specified |
| CNA | Linux | Linux | affected fc274c1e997314bf47f6a62c79b5d7e554ed59c4 7a5214dae906d9f58e07bc4995e8181ee74439f4 git | Not specified |
| CNA | Linux | Linux | affected fc274c1e997314bf47f6a62c79b5d7e554ed59c4 d026f71df141c9b064ff32a78af5391a31ef75c2 git | Not specified |
| CNA | Linux | Linux | affected fc274c1e997314bf47f6a62c79b5d7e554ed59c4 b52476a83d9e12df00765359d728a875b128bef1 git | Not specified |
| CNA | Linux | Linux | affected fc274c1e997314bf47f6a62c79b5d7e554ed59c4 54fa390aae393eb130f307a85562e3001cc39a52 git | Not specified |
| CNA | Linux | Linux | affected fc274c1e997314bf47f6a62c79b5d7e554ed59c4 67e511d2989eb1c8c588b599ce2fcc6bb8e6f7ea git | Not specified |
| CNA | Linux | Linux | affected 5.19 | Not specified |
| CNA | Linux | Linux | unaffected 5.19 semver | Not specified |
| CNA | Linux | Linux | unaffected 6.1.178 6.1.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.6.145 6.6.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.12.96 6.12.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.18.39 6.18.* semver | Not specified |
| CNA | Linux | Linux | unaffected 7.1.4 7.1.* semver | Not specified |
| CNA | Linux | Linux | unaffected 7.2-rc3 * original_commit_for_fix | Not specified |
References
| Reference | Source | Link | Tags |
|---|---|---|---|
| git.kernel.org/stable/c/50eeb8e8a4f389efc91b93cff14a683e714ec194 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/d026f71df141c9b064ff32a78af5391a31ef75c2 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/67e511d2989eb1c8c588b599ce2fcc6bb8e6f7ea | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/54fa390aae393eb130f307a85562e3001cc39a52 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/b52476a83d9e12df00765359d728a875b128bef1 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/7a5214dae906d9f58e07bc4995e8181ee74439f4 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/f845852a5a8914277031f47d8de0f350fef52405 | MITRE | git.kernel.org | |
| CVE Program record | CVE.ORG | www.cve.org | canonical |
| NVD vulnerability detail | NVD | nvd.nist.gov | canonical, analysis |
No vendor comments have been submitted for this CVE.
There are currently no legacy QID mappings associated with this CVE.