{"id":24588,"date":"2026-09-16T20:32:31","date_gmt":"2026-09-16T12:32:31","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89901"},"modified":"2026-09-16T20:32:31","modified_gmt":"2026-09-16T12:32:31","slug":"cve-2026-89901","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89901","title":{"rendered":"CVE-2026-89901 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: airspy: use vb"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>media: airspy: use vb2_video_unregister_device() on disconnect to fix NULL deref<\/p>\n<p>airspy_disconnect() clears s-&gt;udev under v4l2_lock, but<br \/>\nairspy_stop_streaming() unconditionally calls airspy_ctrl_msg() and<br \/>\nairspy_free_stream_bufs() afterwards. If a streaming user closes the<br \/>\ndevice after disconnect, stop_streaming() runs and dereferences the<br \/>\nNULL s-&gt;udev:<\/p>\n<p>  airspy_stop_streaming()<br \/>\n    airspy_ctrl_msg(s, CMD_RECEIVER_MODE, 0, 0, NULL, 0)<br \/>\n      usb_sndctrlpipe(s-&gt;udev, 0)         \/* NULL deref *\/<br \/>\n    airspy_free_stream_bufs(s)<br \/>\n      usb_free_coherent(s-&gt;udev, &#8230;)     \/* NULL deref *\/<\/p>\n<p>The airspy driver uses vb2_fop_release() in its file_operations, so<br \/>\nreplace video_unregister_device(&amp;s-&gt;vdev) with<br \/>\nvb2_video_unregister_device(&amp;s-&gt;vdev) and move it before clearing<br \/>\ns-&gt;udev. vb2_video_unregister_device() releases the vb2 queue, which<br \/>\nsynchronously runs airspy_stop_streaming() if streaming is active, so<br \/>\nthe URBs, coherent DMA stream buffers and the hardware stop control<br \/>\nmessage all execute while s-&gt;udev is still valid.<\/p>\n<p>vb2_video_unregister_device() locks vdev-&gt;queue-&gt;lock (vb_queue_lock)<br \/>\ninternally, and stop_streaming() locks v4l2_lock, so the previous outer<br \/>\nmutex_lock(&amp;s-&gt;vb_queue_lock) \/ mutex_lock(&amp;s-&gt;v4l2_lock) pair around<br \/>\nthe unregister sequence would self-deadlock and has been removed. A<br \/>\nshort v4l2_lock critical section around s-&gt;udev = NULL remains so any<br \/>\nioctl path that still holds the file descriptor sees coherent state.<\/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: airspy: use vb2_video_unregister_device() on disconnect to fix NULL deref<\/p>\n<p>airspy_disconnect() clears s-&gt;udev under v4l2_loc<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24588","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24588","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=24588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}