{"id":41238,"date":"2026-10-19T00:32:45","date_gmt":"2026-10-18T16:32:45","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98766"},"modified":"2026-10-19T00:32:45","modified_gmt":"2026-10-18T16:32:45","slug":"cve-2026-98766","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98766","title":{"rendered":"CVE-2026-98766 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: aspeed-v"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>usb: gadget: aspeed-vhub: cancel wake work on device removal<\/p>\n<p>wake_work is armed from the gadget .wakeup callback to resume suspended<br \/>\ndownstream ports, and it is never cancelled in ast_vhub_remove(), so a<br \/>\nwork item queued before or during removal can run after devm has freed<br \/>\nvhub and its ports, a use-after-free.<\/p>\n<p>Cancelling the work alone is not sufficient: usb_gadget_wakeup() takes<br \/>\nno lock and the unbind path never clears wakeup_en, so a remote-wakeup<br \/>\nrequest in flight on another CPU can re-arm the work after the cancel<br \/>\nand before vhub is freed.<\/p>\n<p>ast_vhub_del_dev() already clears d-&gt;registered under vhub-&gt;lock before<br \/>\nunregistering the gadget. Refuse the wakeup in ast_vhub_udc_wakeup()<br \/>\nonce d-&gt;registered is clear: the check and the schedule_work() are then<br \/>\natomic against the unbind, so a wakeup that passed before the flag was<br \/>\ncleared is drained by the cancel_work_sync() after the del_dev loop,<br \/>\nand one that arrives later returns without arming. Also move INIT_WORK()<br \/>\nto the top of ast_vhub_probe(), since the probe error path reuses<br \/>\nast_vhub_remove() and would otherwise cancel a never-initialized work<br \/>\nitem.<\/p>\n<p>This issue was found by an in-house static analysis tool.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>usb: gadget: aspeed-vhub: cancel wake work on device removal<\/p>\n<p>wake_work is armed from the gadget .wakeup callback to resume suspend<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41238","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41238","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=41238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}