CVE-2026-80971

ALSA: bcd2000: clear the URB pointers on disconnect

State
Published
Severity
7.8 High
Published
Sep 11, 2026
Updated
Oct 19, 2026
Reserved
Aug 26, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

ALSA: bcd2000: clear the URB pointers on disconnect

bcd2000_free_usb_related_resources() frees both URBs and leaves the pointers behind:

usb_kill_urb(bcd2k->midi_out_urb); usb_kill_urb(bcd2k->midi_in_urb);

usb_free_urb(bcd2k->midi_out_urb); usb_free_urb(bcd2k->midi_in_urb);

The rawmidi device outlives that call. A substream that is still open when the device is unplugged reaches bcd2000_midi_send() from the trigger path on close. That function writes to the freed URB and then hands it to the USB core:

bcd2k->midi_out_urb->transfer_buffer_length = BUFSIZE; ... ret = usb_submit_urb(bcd2k->midi_out_urb, GFP_ATOMIC);

usb_kill_urb() does not stop a later submission either, so a submit that races the disconnect can requeue the URB after it has been reaped. midi_in_urb is exposed the same way: bcd2000_input_complete() resubmits it from the completion handler.

KASAN on 7.2.0-rc5 (arm64):

BUG: KASAN: slab-use-after-free in bcd2000_midi_send [snd_bcd2000] Write of size 4 at addr ffff00001827d388 by task bpoc/168 __asan_store4 bcd2000_midi_send [snd_bcd2000] bcd2000_midi_output_trigger [snd_bcd2000] snd_rawmidi_kernel_write1 close_substream.part.0 Freed by task 168: usb_free_urb bcd2000_disconnect [snd_bcd2000]

BUG: KASAN: slab-use-after-free in usb_submit_urb Read of size 8 at addr ffff00001827d3b8 by task bpoc/168

Clear both pointers after freeing and test them on the paths that can still run. Poison the URBs before freeing them: usb_poison_urb() waits for a running completion handler and rejects any later submission, so after it returns the input path is quiesced and only the rawmidi trigger path can still reach bcd2000_midi_send(). No unpoison is needed; the URBs are freed on the next line.

Discovered by XBOW, triaged by Baul Lee <baul.lee@xbow.com>

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • b47a22290d581277be70e8a597824a4985d39e83 to before 9af08677aa57debaca5b57c8045c52a83d3dd376Affected
  • b47a22290d581277be70e8a597824a4985d39e83 to before 5a77febac6faf6da40fbb4555f703eeb91b58130Affected
  • b47a22290d581277be70e8a597824a4985d39e83 to before 3c00004f134fc819f9d9e202c6a64acde0a1f8d0Affected
  • b47a22290d581277be70e8a597824a4985d39e83 to before 6c07aad8a7c9ef8ebc4d03a964b882123a349a2eAffected
  • b47a22290d581277be70e8a597824a4985d39e83 to before eb482a06791d6168beb8c78cc904ac5a5ed96a55Affected
  • b47a22290d581277be70e8a597824a4985d39e83 to before 7df3194bdb7479cad9199889655a566a2c0c1d1bAffected
  • b47a22290d581277be70e8a597824a4985d39e83 to before b06ebc7fe25a6af4a9f6e4a3d4236a4178ad4b01Affected
  • b47a22290d581277be70e8a597824a4985d39e83 to before 459d3a64766f5ca2f1886daeaf24582831a5f5abAffected
LinuxLinux
  • 3.16Affected
  • before 3.16Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.