{"id":40968,"date":"2026-10-19T00:31:42","date_gmt":"2026-10-18T16:31:42","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98496"},"modified":"2026-10-19T00:31:42","modified_gmt":"2026-10-18T16:31:42","slug":"cve-2026-98496","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98496","title":{"rendered":"CVE-2026-98496 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet: airoha: npu: can"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: airoha: npu: cancel wdt_work after releasing the WDT IRQ<\/p>\n<p>airoha_npu_remove() calls cancel_work_sync() on each core&#8217;s wdt_work,<br \/>\nbut the watchdog IRQ that queues it is requested with devm_request_irq()<br \/>\nand is freed only after .remove() returns.  airoha_npu_wdt_handler() can<br \/>\ntherefore schedule_work() again once the cancel has returned.  struct<br \/>\nairoha_npu, which contains the work, is devm_kzalloc()&#8217;d and is freed in<br \/>\nthat same unwind, so the late work dereferences freed memory.<\/p>\n<p>Register the work with devm_work_autocancel() before devm_request_irq()<br \/>\nand drop .remove().  Devres runs in reverse order, so the IRQ is freed<br \/>\nbefore cancel_work_sync(), including when probe fails.  A cancel left in<br \/>\n.remove() cannot get that order.  Initializing the work first also stops<br \/>\na pending watchdog interrupt from queuing an uninitialized work item.<br \/>\nProbe currently calls INIT_WORK() only after devm_request_irq().<\/p>\n<p>This issue was identified during our ongoing static-analysis research<br \/>\nwhile reviewing kernel code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: airoha: npu: cancel wdt_work after releasing the WDT IRQ<\/p>\n<p>airoha_npu_remove() calls cancel_work_sync() on each core&#8217;s wdt_work<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-40968","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/40968","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=40968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=40968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=40968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}