Vulnerability · Published Aug 6, 2026 · Assigned by Linux
CVE-2026-64584usb: gadget: f_midi: cancel pending IN work before freeing the midi object
High 7.8
In plain English
A high-severity security flaw in Linux from Linux. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.1% (higher than 2% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.
Official description
In the Linux kernel, the following vulnerability has been resolved: usb: gadget: f_midi: cancel pending IN work before freeing the midi object The f_midi driver embeds a work item (midi->work) whose handler, f_midi_in_work(), dereferences the enclosing struct f_midi through container_of(). This work is armed from two sites: f_midi_complete(), on a normal IN-endpoint completion, and f_midi_in_trigger(), on an ALSA rawmidi output-stream start. Neither f_midi_disable() nor f_midi_unbind() cancels midi->work. f_midi_disable() only disables the endpoints and drains the in_req_fifo; it does not synchronize the work item, and the sound card is released asynchronously to the final free of the midi object. The midi object is reference-counted (midi->free_ref) and is freed in f_midi_free() only once both the usb_function reference and the rawmidi private_data reference have been dropped. In f_midi_unbind(), f_midi_disable() runs before the sound card is released, so while the USB endpoints are already disabled the rawmidi device is still usable by an open substream. A concurrent userspace write on such a substream can reach f_midi_in_trigger() and queue midi->work again after f_midi_disable() has returned. A work item armed this way may still be pending when the last reference drops and f_midi_free() proceeds to kfree(midi), letting f_midi_in_work() dereference the struct after it has been freed, a use-after-free. For this reason cancelling midi->work in f_midi_disable() would not be sufficient: the ALSA trigger path can rearm the work after disable() returns. Cancelling at the refcount-zero free site is the boundary after which neither arming source can survive, because by then both references that keep the midi object alive have been dropped: the USB endpoints are already disabled and the rawmidi device has been released. Fix this by calling cancel_work_sync(&midi->work) in the refcount-zero block of f_midi_free(), before the embedded work_struct is freed along with the rest of the structure. opts->lock is a sleeping mutex, so calling cancel_work_sync() under it is permitted, and the handler takes midi->transmit_lock rather than opts->lock, so no self-deadlock can occur while it waits for a running instance of the work to finish. This issue was found by an in-house static analysis tool.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian:12 | linux | 6.1.187-1 | DEBIAN-CVE-2026-64584 |
| Debian:13 | linux | 6.12.101-1 | DEBIAN-CVE-2026-64584 |
| Debian:14 | linux | 7.1.6-1 | DEBIAN-CVE-2026-64584 |
| Debian:12 | linux-6.12 | 6.12.101-1~deb12u1 | DEBIAN-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux | 5.15.0-198.208 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux | 6.8.0-147.147 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux | 7.0.0-38.38 | USN-8887-1 |
| Ubuntu:26.04:LTS | linux | 7.0.0-38.38 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-allwinner-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-aws | 5.15.0-1117.124 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-aws | 6.8.0-1067.70 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-aws | 7.0.0-1014.14 | USN-8887-1 |
| Ubuntu:26.04:LTS | linux-aws | 7.0.0-1014.14 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-aws-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-aws-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-aws-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-aws-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-aws-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-aws-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-aws-7.0 | 7.0.0-1014.14~24.04.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-aws-7.0 | 7.0.0-1014.14~24.04.1 | USN-8887-2 |
| Ubuntu:22.04:LTS | linux-azure | 5.15.0-1123.132 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure | 6.8.0-1071.79 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-azure | 7.0.0-1017.17 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-6.11 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-7.0 | 7.0.0-1017.17~24.04.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-fde | 5.15.0-1122.131 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-fde | 6.8.0-1069.76 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-azure-fde | 7.0.0-1016.16 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-fde-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-fde-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-fde-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-fde-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-azure-fde-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-fde-7.0 | 7.0.0-1016.16~24.04.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-nvidia | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-azure-nvidia-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-gcp | 5.15.0-1118.128 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-gcp | 6.8.0-1071.79 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-gcp | 7.0.0-1014.14 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-gcp | 7.0.0-1014.14 | USN-8887-1 |
| Ubuntu:22.04:LTS | linux-gcp-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-gcp-6.11 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-gcp-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-gcp-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-gcp-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-gcp-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-gcp-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-gcp-7.0 | 7.0.0-1014.14~24.04.1 | USN-8887-3 |
| Ubuntu:24.04:LTS | linux-gcp-7.0 | 7.0.0-1014.14~24.04.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-gke | 5.15.0-1113.119 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-gke | 6.8.0-1066.74 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-gke | 7.0.0-1008.9 | USN-8887-1 |
| Ubuntu:26.04:LTS | linux-gke | 7.0.0-1008.9 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-gkeop | 5.15.0-1100.108 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-gkeop | 6.8.0-1052.56 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-hwe-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-hwe-6.11 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-hwe-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-hwe-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-hwe-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-hwe-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-hwe-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-hwe-7.0 | 7.0.0-38.38~24.04.4 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-hwe-7.0 | 7.0.0-38.38~24.04.4 | USN-8887-3 |
| Ubuntu:22.04:LTS | linux-ibm | 5.15.0-1111.115 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-ibm | 6.8.0-1067.68 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-ibm | 7.0.0-1015.15 | USN-8887-1 |
| Ubuntu:26.04:LTS | linux-ibm | 7.0.0-1015.15 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-ibm-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-intel-iot-realtime | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-intel-iotg | 5.15.0-1112.118 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-kvm | 5.15.0-1109.114 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-lowlatency | 5.15.0-195.205 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-lowlatency | 6.8.0-147.147.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-lowlatency-hwe-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-lowlatency-hwe-6.11 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-lowlatency-hwe-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-lowlatency-hwe-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-lowlatency-hwe-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-nvidia | 5.15.0-1112.113 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-nvidia | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-nvidia | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-nvidia-6.11 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-nvidia-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-nvidia-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-nvidia-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-nvidia-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-nvidia-7.0 | 7.0.0-1024.25~24.04.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-nvidia-bos | 7.0.0-2022.23 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-nvidia-lowlatency | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-nvidia-tegra | 5.15.0-1070.72 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-nvidia-tegra | 6.8.0-1036.39 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-nvidia-tegra-igx | 5.15.0-1059.59 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-oem-5.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-oem-6.0 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-oem-6.1 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oem-6.11 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oem-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oem-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-oem-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oem-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-oem-7.0 | 7.0.0-1015.15 | USN-8889-1 |
| Ubuntu:26.04:LTS | linux-oem-7.0 | 7.0.0-1015.15 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-oracle | 5.15.0-1114.120 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oracle | 6.8.0-1064.67 | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-oracle | 7.0.0-1013.13 | USN-8887-1 |
| Ubuntu:26.04:LTS | linux-oracle | 7.0.0-1013.13 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oracle-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oracle-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-oracle-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-oracle-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-oracle-7.0 | 7.0.0-1013.13~24.04.1 | USN-8887-3 |
| Ubuntu:24.04:LTS | linux-oracle-7.0 | 7.0.0-1013.13~24.04.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-raspi | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-raspi | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-raspi | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-raspi-realtime | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-realtime | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-realtime | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-realtime | 7.0.0-38.38.1 | USN-8887-1 |
| Ubuntu:26.04:LTS | linux-realtime | 7.0.0-38.38.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-riscv | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-riscv | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:26.04:LTS | linux-riscv | 7.0.0-38.38.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-riscv-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-riscv-6.14 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-riscv-6.17 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-riscv-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-riscv-6.8 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-riscv-7.0 | 7.0.0-38.38.1~24.04.1 | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-starfive-5.19 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-starfive-6.2 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-starfive-6.5 | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-vmware | 6.8.0-1008.8 | UBUNTU-CVE-2026-64584 |
| Ubuntu:24.04:LTS | linux-xilinx | no fix listed | UBUNTU-CVE-2026-64584 |
| Ubuntu:22.04:LTS | linux-xilinx-zynqmp | 5.15.0-1080.84 | UBUNTU-CVE-2026-64584 |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| Linux | Linux | 3635523e9b96213969693c320302d536774d8e9b – before f3c6f2c38062703d3dc7f86958bb0790c6959add8653d71ce3763aedcf3d2331f59beda3fecd79e4 – before df18150126f66817e4d3f79f309e9c92d6ff384e8653d71ce3763aedcf3d2331f59beda3fecd79e4 – before 620955b222c47332297d6bf38f78541aa699238a8653d71ce3763aedcf3d2331f59beda3fecd79e4 – before 380b4bef46c2eb260c7a9c6bb2c5be33ce5a38f98653d71ce3763aedcf3d2331f59beda3fecd79e4 – before 87bc316dd6fc90072297c635e10b9aa6075ecda18653d71ce3763aedcf3d2331f59beda3fecd79e4 – before f45089eaad0a083d71d84ff175741d7e157d9b698653d71ce3763aedcf3d2331f59beda3fecd79e4 – before ac9a51d910bb7465c554c45320cb6c09f3d0b49d8653d71ce3763aedcf3d2331f59beda3fecd79e4 – before 5650c18d93a1db7e27cb5a40b394747eb4686d5b |
| Linux | Linux | 5.12 |
References
- https://git.kernel.org/stable/c/f3c6f2c38062703d3dc7f86958bb0790c6959add
- https://git.kernel.org/stable/c/df18150126f66817e4d3f79f309e9c92d6ff384e
- https://git.kernel.org/stable/c/620955b222c47332297d6bf38f78541aa699238a
- https://git.kernel.org/stable/c/380b4bef46c2eb260c7a9c6bb2c5be33ce5a38f9
- https://git.kernel.org/stable/c/87bc316dd6fc90072297c635e10b9aa6075ecda1
- https://git.kernel.org/stable/c/f45089eaad0a083d71d84ff175741d7e157d9b69
- https://git.kernel.org/stable/c/ac9a51d910bb7465c554c45320cb6c09f3d0b49d
- https://git.kernel.org/stable/c/5650c18d93a1db7e27cb5a40b394747eb4686d5b