CVE-2026-89880

CVE-2026-89880

High · published September 16, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
5.9
In the wild
Unconfirmed
What it is

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

media: rtl2832_sdr: release URBs and stream buffers on start_streaming() failure

rtl2832_sdr_start_streaming() calls rtl2832_sdr_alloc_stream_bufs(),

rtl2832_sdr_alloc_urbs() and rtl2832_sdr_submit_urbs() in sequence and

shares a single err: label that only unlocks the mutex and returns.

When alloc_urbs() succeeds but submit_urbs() fails, or when alloc_urbs()

itself returns -ENOMEM after alloc_stream_bufs() has already succeeded,

the URBs and/or the coherent DMA stream buffers stay allocated while

streaming reports failure to vb2. Two latent defects follow on the next

VIDIOC_STREAMON:

1) rtl2832_sdr_alloc_stream_bufs() unconditionally resets dev->buf_num

to 0 and overwrites dev->buf_list[]/dev->dma_addr[], permanently

leaking the coherent DMA memory allocated by the previous attempt.

2) rtl2832_sdr_alloc_urbs() never resets dev->urbs_initialized and only

increments it. After a second successful pass urbs_initialized can

exceed MAX_BULK_BUFS, so the subsequent rtl2832_sdr_free_urbs() walks

from urbs_initialized - 1 down to 0 and reads past the end of

dev->urb_list[], passing garbage pointers to usb_free_urb().

Mirror the teardown that stop_streaming() already performs: on the error

path call rtl2832_sdr_free_urbs() and rtl2832_sdr_free_stream_bufs()

before unlocking. Both helpers are idempotent (free_urbs kills and zeros

urbs_initialized; free_stream_bufs is gated on URB_BUF and clears the

buf_num counter), so partial-failure paths and the no-allocation paths

remain safe.

Issue identified by automated review of the INV-003 series at

https://sashiko.dev/

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00169 · 5.9th percentile
Published
2026-09-16T15:16Z
References (8)
EPSS history
Timeline
  • 18 SEP 04:02Z
    EPSS moved — → 0%
    epss
  • 16 SEP 10:31Z
    media: rtl2832_sdr: release URBs and stream buffers on start_streaming() failure
    cvelistv5