{"id":41245,"date":"2026-10-19T00:32:47","date_gmt":"2026-10-18T16:32:47","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98773"},"modified":"2026-10-19T00:32:47","modified_gmt":"2026-10-18T16:32:47","slug":"cve-2026-98773","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98773","title":{"rendered":"CVE-2026-98773 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nUSB: cdc-acm: skip UR"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>USB: cdc-acm: skip URB restart in port_shutdown if disconnected<\/p>\n<p>acm_port_shutdown() is called from the tty-port machinery whenever the<br \/>\nlast user closes the port.  acm_disconnect() sets acm-&gt;disconnected and<br \/>\ncalls tty_port_tty_vhangup(), which eventually triggers port_shutdown().<br \/>\nAt that point acm_disconnect() has already called acm_poison_urbs() and<br \/>\nis about to free the control and read URBs.<\/p>\n<p>However, acm_port_shutdown() unconditionally calls acm_unpoison_urbs()<br \/>\nand, when the ALWAYS_POLL_CTRL quirk is set, immediately re-submits the<br \/>\nctrlurb and all read URBs.  If the concurrent acm_disconnect() then<br \/>\nfrees those URBs and their DMA buffers while they are in-flight, the<br \/>\nresult is a use-after-free in acm_ctrl_irq() or acm_read_bulk_callback()<br \/>\naccessing the freed DMA memory.<\/p>\n<p>Fix by checking acm-&gt;disconnected after draining the delayed anchor and<br \/>\nreturning early: if we are in a disconnect path the URBs must remain<br \/>\npoisoned and must not be resubmitted.<\/p>\n<p>The early return is placed after the delayed-anchor drain loop because<br \/>\nthat loop only cancels write-side accounting (wb-&gt;use = false and<br \/>\nautopm counter) and does not touch the hardware path.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>USB: cdc-acm: skip URB restart in port_shutdown if disconnected<\/p>\n<p>acm_port_shutdown() is called from the tty-port machinery whenever<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41245","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41245","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=41245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}