{"id":22463,"date":"2026-09-15T04:30:54","date_gmt":"2026-09-14T20:30:54","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-16148"},"modified":"2026-09-15T04:30:54","modified_gmt":"2026-09-14T20:30:54","slug":"cve-2026-16148","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-16148","title":{"rendered":"CVE-2026-16148 [MEDIUM] &#8211; The ITE it82xx2 USB device-controller driver initialized its bus-suspend detection work wi"},"content":{"rendered":"<p>The ITE it82xx2 USB device-controller driver initialized its bus-suspend detection work with k_work_init_delayable(&amp;priv-&gt;suspended_work, suspended_handler) inside it82xx2_enable() (the driver&#8217;s .enable op) in drivers\/usb\/udc\/udc_it82xx2.c. This work item is scheduled essentially continuously while the USB bus is active: the interrupt handler reschedules it on every SOF frame and suspended_handler() reschedules itself, so its timeout node is normally linked in the kernel timeout list \/ a workqueue pending queue.<\/p>\n<p>k_work_init_delayable() (kernel\/work.c) unconditionally overwrites the entire k_work_delayable structure, including its timeout and queue linkage, with no busy check. Because it82xx2_disable() does not cancel the work, a normal disable-then-enable cycle re-runs api-&gt;enable() (udc_enable() only rejects a redundant enable, not a re-enable after disable) and re-initializes the still-pending work in place, corrupting the kernel timeout\/workqueue linked lists and causing a kernel panic.<\/p>\n<p>An external USB host \u2014 for example a host performing USB DFU detach (dfu-util &#8211;detach) or forcing repeated attach\/reset\/re-enumeration \u2014 drives the udc_disable()\/udc_enable() transitions and controls suspend\/resume timing, so it can arrange for the suspend work to be pending across a re-enable. This yields an unauthenticated denial of service (kernel panic) reachable across the USB boundary from a removable, physically-connected host, with no confidentiality or integrity impact demonstrated.<\/p>\n<p>The fix moves the k_work_init_delayable() call into the one-time preinit function so the work is initialized exactly once, eliminating the re-initialization of an in-use item.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The ITE it82xx2 USB device-controller driver initialized its bus-suspend detection work with k_work_init_delayable(&amp;priv-&gt;suspended_work, suspended_handler) inside it82xx2_enable() (the driver&#8217;s .enab<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-22463","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/22463","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=22463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}