CVE-2026-98770: usb: gadget: midi2: Fix the jack descriptor array sizes
In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: midi2: Fix the jack descriptor array sizes
The jack in/out descriptor arrays in struct fmidi2usbconfig have the size of MAXCABLES, which look reasonable -- but it turned out to be incorrect. Namely, the entries for those arrays are added from both inputs and outputs, hence for each loop cycle, it adds two, ended up with as twice as the expected size. This inconsistency may result in potential OOB when a large number of jacks are set up via configfs, although the max number of cables (the loop count) is limited to MAXCABLES.
For addressing it, correct the jackins & jackouts array sizes to twice, MAXCABLES 2.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Correct the jack_ins and jack_outs descriptor array sizes in struct f_midi2_usb_config from MAX_CABLES to MAX_CABLES * 2.
Linux kernel usb gadget midi2 jack_ins and jack_outs array sizes = MAX_CABLES * 2
Event History
Frequently Asked Questions
Who is exposed to this issue?
Systems using the Linux kernel USB gadget MIDI2 function may be exposed when that function is configured through configfs with a large number of jacks.
What is required to trigger the out-of-bounds condition?
The condition may occur when configuring many MIDI2 input and output jacks via configfs. The descriptor bookkeeping adds entries for both inputs and outputs, while the affected arrays were sized only for MAX_CABLES entries.
Is the maximum cable limit sufficient to prevent the issue?
No. Although the cable loop count is limited to MAX_CABLES, each loop adds two entries, so the affected jack descriptor arrays can require up to twice that capacity.
What is the available fix?
The resolved change increases the jack_ins and jack_outs descriptor array sizes from MAX_CABLES to MAX_CABLES * 2. The provided stable-kernel references identify commits containing the fix.