CVE-2026-64344
Analyzed
Analyzed - Analysis Complete
USB: idmouse Use-After-Free on Disconnect Race
Vulnerability report for CVE-2026-64344, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.
Publication date: 2026-07-25
Last updated on: 2026-09-03
Assigner: kernel.org
Description
Description
In the Linux kernel, the following vulnerability has been resolved:
USB: idmouse: fix use-after-free on disconnect race
mutex_unlock() may access the mutex structure after releasing the lock
and therefore cannot be used to manage lifetime of objects directly
(unlike spinlocks and refcounts). [1][2]
Use a kref to release the driver data to avoid use-after-free in
mutex_unlock() when release() races with disconnect().
[1] a51749ab34d9 ("locking/mutex: Document that mutex_unlock() is
non-atomic")
[2] 2b9d9e0a9ba0 ("locking/mutex: Clarify that mutex_unlock(), and most
other sleeping locks, can still use the lock object
after it's unlocked")
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | 2.6.24 |
| linux | linux_kernel | From 5.11 (inc) to 5.15.212 (exc) |
| linux | linux_kernel | From 5.16 (inc) to 6.1.178 (exc) |
| linux | linux_kernel | From 6.2 (inc) to 6.6.145 (exc) |
| linux | linux_kernel | From 6.7 (inc) to 6.12.96 (exc) |
| linux | linux_kernel | From 6.13 (inc) to 6.18.39 (exc) |
| linux | linux_kernel | From 6.19 (inc) to 7.1.4 (exc) |
| linux | linux_kernel | 7.2 |
| linux | linux_kernel | 7.2 |
| linux | linux_kernel | From 2.6.24.1 (inc) to 5.10.261 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-416 | The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer. |