Description
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/
Published: 2026-09-16
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Patch Immediately
AI Analysis

Impact

The rtl2832_sdr_start_streaming() function allocates asynchronous request blocks (URBs) and stream buffers before submitting them for USB transmission. If allocation succeeds but submission fails, or allocation fails after stream buffers have been allocated, the code fails to release the allocated resources. This leads to memory leaks and subsequent erroneous state. When a second streaming request is attempted, the earlier leak causes the urb_initialized counter to exceed the maximum bulk buffer count, resulting in a processing loop that reads past the end of the urb_list array and passes garbage pointers to usb_free_urb(), which can corrupt kernel memory or cause a crash. The likely attack vector is local control of the RTL2832 SDR device, with an attacker able to trigger repeated start_stream calls to exhaust memory or destabilize the kernel. The impact is a denial of service via kernel crash or instability.

Affected Systems

The vulnerability exists in the Linux kernel's rtl2832_sdr driver, used for RTL2832-based software defined radio (SDR) devices. No specific kernel release or patch level is disclosed in the advisory, so any Linux kernel version containing the vulnerable rtl2832_sdr code may be affected.

Risk and Exploitability

The CVSS score of 7.8 indicates a high severity issue, while the EPSS score of less than 1% shows a very low probability of exploitation in the wild. The vulnerability is not yet listed in the CISA KEV catalog. The bug requires local access to the SDR hardware and knowledge of the driver’s streaming API, meaning attackers are limited to privileged users or those with physical access to the device. Nonetheless, the failure to properly release resources can be leveraged to exhaust memory or corrupt kernel memory, providing a robust denial-of-service route.

Generated by OpenCVE AI on September 18, 2026 at 03:03 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply a recent Linux kernel update that contains the patched rtl2832_sdr driver.
  • If a kernel update is not yet available, disable the rtl2832_sdr module or remove the RTL2832 SDR hardware from the system to prevent exploitation attempts.
  • Optionally, apply the vendor‑supplied patch directly to the rtl2832_sdr source tree and rebuild the kernel if an update cannot be applied in a timely manner.

Generated by OpenCVE AI on September 18, 2026 at 03:03 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4817-1 linux-6.12 security update
Debian DSA Debian DSA DSA-6528-1 linux security update
History

Fri, 18 Sep 2026 03:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-125
CWE-401
CWE-416

Wed, 16 Sep 2026 22:45:00 +0000

Type Values Removed Values Added
First Time appeared Linux kernel
Vendors & Products Linux kernel

Wed, 16 Sep 2026 14:45:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Wed, 16 Sep 2026 10:45:00 +0000

Type Values Removed Values Added
Description 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/
Title media: rtl2832_sdr: release URBs and stream buffers on start_streaming() failure
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Kernel Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-16T14:39:31.925Z

Reserved: 2026-09-11T19:38:34.772Z

Link: CVE-2026-89880

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-16T11:16:56.363

Modified: 2026-09-16T15:18:14.700

Link: CVE-2026-89880

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-18T03:15:02Z

Weaknesses
  • CWE-125

    Out-of-bounds Read

  • CWE-401

    Missing Release of Memory after Effective Lifetime

  • CWE-416

    Use After Free