{"id":24581,"date":"2026-09-16T20:32:30","date_gmt":"2026-09-16T12:32:30","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89894"},"modified":"2026-09-16T20:32:30","modified_gmt":"2026-09-16T12:32:30","slug":"cve-2026-89894","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89894","title":{"rendered":"CVE-2026-89894 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: cx231xx: rejec"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>media: cx231xx: reject geometry changes while the VBI queue is busy<\/p>\n<p>vidioc_s_fmt_vid_cap() and vidioc_s_std() change the device-wide<br \/>\ndev-&gt;width \/ dev-&gt;norm but only refuse the change when the *video* queue<br \/>\n(dev-&gt;vidq) is busy. The VBI queue (dev-&gt;vbiq) shares that same geometry:<br \/>\ncx231xx_init_vbi_isoc() latches dma_q-&gt;lines_per_field from dev-&gt;norm,<br \/>\nthe VBI videobuf2 plane is sized from dev-&gt;width \/ dev-&gt;norm in<br \/>\nvbi_queue_setup() and vbi_buf_prepare(), and cx231xx_do_vbi_copy() then<br \/>\nrecomputes the destination offset from the *live* dev-&gt;width and the<br \/>\nlatched lines_per_field on every URB completion:<\/p>\n<p>\toffset = lines_completed * (dev-&gt;width &lt;current_field == 2)<br \/>\n\t\toffset += dev-&gt;width * 2 * dma_q-&gt;lines_per_field;<br \/>\n\tmemcpy(plane + offset, p_buffer, lencopy);<\/p>\n<p>Because the VBI node shares video_ioctl_ops with the video node, an<br \/>\napplication can size a small VBI plane (REQBUFS\/QBUF with a small width,<br \/>\nor with the NTSC standard), then enlarge dev-&gt;width (or switch dev-&gt;norm<br \/>\nto PAL) through the video node while the VBI stream is running &#8212; the<br \/>\nchange is allowed because only dev-&gt;vidq is checked &#8212; and let the device<br \/>\ndeliver a field-2 VBI payload. cx231xx_do_vbi_copy() now computes the<br \/>\noffset with the larger geometry and memcpy()s past the end of the smaller<br \/>\nplane that was already allocated, a heap out-of-bounds write whose offset<br \/>\nis attacker-chosen and whose contents come from the device. The<br \/>\nper-field guard in cx231xx_copy_vbi_line() does not help: it bounds the<br \/>\ncopy against the latched lines_per_field, not the plane&#8217;s real capacity,<br \/>\nand vb2 does not re-run buf_prepare() for an already prepared buffer.<\/p>\n<p>Refuse the format\/standard change when the VBI queue is busy as well, so<br \/>\nthe geometry cannot change underneath an allocated VBI buffer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>media: cx231xx: reject geometry changes while the VBI queue is busy<\/p>\n<p>vidioc_s_fmt_vid_cap() and vidioc_s_std() change the device-wi<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24581","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24581","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=24581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}