{"id":24567,"date":"2026-09-16T20:32:29","date_gmt":"2026-09-16T12:32:29","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89880"},"modified":"2026-09-16T20:32:29","modified_gmt":"2026-09-16T12:32:29","slug":"cve-2026-89880","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89880","title":{"rendered":"CVE-2026-89880 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: rtl2832_sdr: r"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>media: rtl2832_sdr: release URBs and stream buffers on start_streaming() failure<\/p>\n<p>rtl2832_sdr_start_streaming() calls rtl2832_sdr_alloc_stream_bufs(),<br \/>\nrtl2832_sdr_alloc_urbs() and rtl2832_sdr_submit_urbs() in sequence and<br \/>\nshares a single err: label that only unlocks the mutex and returns.<br \/>\nWhen alloc_urbs() succeeds but submit_urbs() fails, or when alloc_urbs()<br \/>\nitself returns -ENOMEM after alloc_stream_bufs() has already succeeded,<br \/>\nthe URBs and\/or the coherent DMA stream buffers stay allocated while<br \/>\nstreaming reports failure to vb2. Two latent defects follow on the next<br \/>\nVIDIOC_STREAMON:<\/p>\n<p>1) rtl2832_sdr_alloc_stream_bufs() unconditionally resets dev-&gt;buf_num<br \/>\n   to 0 and overwrites dev-&gt;buf_list[]\/dev-&gt;dma_addr[], permanently<br \/>\n   leaking the coherent DMA memory allocated by the previous attempt.<\/p>\n<p>2) rtl2832_sdr_alloc_urbs() never resets dev-&gt;urbs_initialized and only<br \/>\n   increments it. After a second successful pass urbs_initialized can<br \/>\n   exceed MAX_BULK_BUFS, so the subsequent rtl2832_sdr_free_urbs() walks<br \/>\n   from urbs_initialized &#8211; 1 down to 0 and reads past the end of<br \/>\n   dev-&gt;urb_list[], passing garbage pointers to usb_free_urb().<\/p>\n<p>Mirror the teardown that stop_streaming() already performs: on the error<br \/>\npath call rtl2832_sdr_free_urbs() and rtl2832_sdr_free_stream_bufs()<br \/>\nbefore unlocking. Both helpers are idempotent (free_urbs kills and zeros<br \/>\nurbs_initialized; free_stream_bufs is gated on URB_BUF and clears the<br \/>\nbuf_num counter), so partial-failure paths and the no-allocation paths<br \/>\nremain safe.<\/p>\n<p>Issue identified by automated review of the INV-003 series at<br \/>\nhttps:\/\/sashiko.dev\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>media: rtl2832_sdr: release URBs and stream buffers on start_streaming() failure<\/p>\n<p>rtl2832_sdr_start_streaming() calls rtl2832_sdr_a<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24567","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}