CVE-2026-89735
NoneCVSS
—
EPSS
0.2%
Published
Sep 11, 2026
CISA due date
—
Cloudanix analysis
A bug in how the Linux kernel cleans up certain USB audio device setups can slowly waste memory on affected machines.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
The flaw is a reference count leak in the Linux kernel USB gadget MIDI2 driver: f_midi2_alloc_inst() adds default configfs groups (incrementing refcounts on f_midi2_ep_opts and f_midi2_block_opts) but f_midi2_free_inst() and f_midi2_ep_opts_release() omit the matching configfs_remove_default_groups() calls, leaving the structures permanently allocated.
Why it matters to the business
Repeated creation and teardown of MIDI2 USB gadget functions slowly exhausts kernel memory on affected Linux systems, potentially leading to degraded performance, failed device enumeration, or eventual denial of service after prolonged operation; low exploitability and absence from known campaigns reduce immediate urgency.
How an attack unfolds
An attacker with the ability to repeatedly load and unload the MIDI2 gadget function (for example via configfs on a system exposing USB gadget interfaces) triggers the allocation path without the corresponding cleanup, accumulating leaked kernel objects until memory pressure occurs.
How to fix it
Update to a Linux kernel version that includes the fix adding configfs_remove_default_groups() calls inside f_midi2_free_inst() and f_midi2_ep_opts_release(); rebuild and reboot with the corrected kernel; if immediate patching is not possible, avoid exposing MIDI2 gadget functions on untrusted systems.
How to confirm the fix worked
Confirm the presence of configfs_remove_default_groups() in both teardown functions in the kernel source; monitor kernel memory statistics (e.g., slabinfo for f_midi2_* objects) across repeated gadget create/destroy cycles to verify leak cessation.
Typical attack path
- Obtain local or gadget-context access to a Linux system exposing USB gadget configfs
- Create and configure a MIDI2 function instance via configfs
- Trigger teardown of the instance or endpoint options (unbind, module unload, or EP release)
- Repeat the allocate/teardown cycle to accumulate leaked objects
How to detect it
Search kernel logs and slab accounting for repeated allocations of f_midi2_ep_opts or f_midi2_block_opts without corresponding frees; monitor configfs teardown paths in f_midi2_free_inst and f_midi2_ep_opts_release for missing cleanup calls; no public exploitation artifacts are known.
What your security team should do
- Prioritize kernel updates on any systems using USB gadget MIDI2 functionality
- Audit configfs-exposed USB gadget configurations and restrict access where MIDI2 is unnecessary
- Add kernel memory leak monitoring for f_midi2 structs to existing observability tooling
The record
In the Linux kernel, the following vulnerability has been resolved: usb: gadget: midi2: remove default configfs groups on teardown f_midi2_alloc_inst() creates default configfs child groups for the default endpoint and default block using configfs_add_default_group(), setting their internal refcount to 1. However, during function teardown in f_midi2_free_inst() or EP cleanup in f_midi2_ep_opts_release(), configfs_remove_default_groups() is never called, therefore never dropping the refcount and leaking struct f_midi2_ep_opts and f_midi2_block_opts. Add the missing configfs_remove_default_groups() in the afformentioned functions to free the structs properly.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|