{"id":29081,"date":"2026-09-25T20:31:50","date_gmt":"2026-09-25T12:31:50","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97925"},"modified":"2026-09-25T20:31:50","modified_gmt":"2026-09-25T12:31:50","slug":"cve-2026-97925","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97925","title":{"rendered":"CVE-2026-97925 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ntick\/broadcast: Plug"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tick\/broadcast: Plug clockevents replacement race<\/p>\n<p>\u6731\u607a\u4e7e reported and decoded the following race condition when a broadcast<br \/>\ndevice is replaced:<\/p>\n<p>CPUA\t\t\t\t\tCPUB<br \/>\n __tick_broadcast_oneshot_control()<br \/>\n   bc = tick_broadcast_device.evtdev;<br \/>\n\t\t\t\t\ttick_install_broadcast_device(dev)<br \/>\n        \t\t\t\tclockevents_exchange_device(cur, dev)<br \/>\n\t\t\t\t\t   shutdown(cur);<br \/>\n\t\t\t\t\t   detach(cur);<br \/>\n\t\t\t\t\t   cur-&gt;handler = noop;<br \/>\n\t\t\t\t\t   tick_broadcast_device.evtdev = dev;<\/p>\n<p>  tick_broadcast_set_event(bc, next_event); &lt;- FAIL: arms a detached device.<\/p>\n<p>If the original broadcast device has a restricted interrupt affinity mask<br \/>\nand the last CPU in that mask goes offline then the BUG() in<br \/>\ntick_cleanup_dead_cpu() triggers because the clockevent device is not in<br \/>\ndetached state.<\/p>\n<p>The reason for this is that tick_install_broadcast_device() is not<br \/>\nserialized vs. tick broadcast operations.<\/p>\n<p>The obvious cure is to serialize tick_install_broadcast_device() with<br \/>\ntick_broadcast_lock against a concurrent tick broadcast operation.<\/p>\n<p>That requires to split clockevents_exchange_device() into two parts, one<br \/>\nwhich does the exchange, shutdown and detach operation and the other which<br \/>\ndrops the module reference count. This is required because the module<br \/>\nreference cannot be dropped while holding tick_broadcast_lock.<\/p>\n<p>Let clockevents_exchange_device() do both operations as before, but let the<br \/>\nbroadcast device code take the two step approach and do the device<br \/>\nexchange under tick_broadcast_lock and drop the module reference count<br \/>\nafter releasing it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tick\/broadcast: Plug clockevents replacement race<\/p>\n<p>\u6731\u607a\u4e7e reported and decoded the following race condition when a broadcast<br \/>\ndevice is<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29081","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29081","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=29081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}