{"id":17469,"date":"2026-09-05T02:31:09","date_gmt":"2026-09-04T18:31:09","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80889"},"modified":"2026-09-05T02:31:09","modified_gmt":"2026-09-04T18:31:09","slug":"cve-2026-80889","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80889","title":{"rendered":"CVE-2026-80889 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ncan: isotp: fix timer"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>can: isotp: fix timer drain order, wakeup handling and tx_gen ordering<\/p>\n<p>This patch is a follow-up to commit cf070fe33bfb (&#8220;can: isotp: serialize<br \/>\nTX state transitions under so-&gt;rx_lock&#8221;) which addresses following<br \/>\nsashiko-bot findings:<\/p>\n<p>&#8211; isotp_sendmsg(): drain so-&gt;txfrtimer first so a stale callback can&#8217;t<br \/>\n  re-arm echotimer after the claim<\/p>\n<p>&#8211; isotp_release(): wake so-&gt;wait after forcing ISOTP_SHUTDOWN so a<br \/>\n  sleeping sendmsg() claim isn&#8217;t stranded<\/p>\n<p>&#8211; isotp_sendmsg(): have both wait_event_interruptible() calls in<br \/>\n  isotp_sendmsg() also wake on ISOTP_SHUTDOWN and do not return claim to<br \/>\n  IDLE to avoid corrupting a concurrent isotp_release() process.<\/p>\n<p>&#8211; isotp_sendmsg(): handle potential claim of a new transfer when<br \/>\n  the wait_event_interruptible() call returns in CAN_ISOTP_WAIT_TX_DONE<br \/>\n  mode. Don&#8217;t touch timers and states of the new transfer if a new thread<br \/>\n  incremented so-&gt;tx_gen before getting the lock at err_event_drop.<\/p>\n<p>&#8211; isotp_sendmsg(): handle a stuck can_send() and omit timer and state<br \/>\n  changes if a new transfer was claimed. wait_tx_done() returns the error<br \/>\n  recorded in so-&gt;tx_result[], tagged with the caller&#8217;s own generation.<\/p>\n<p>&#8211; isotp_tx_timeout(): on a claimed timeout, record the ECOMM error for<br \/>\n  the timed-out transfer&#8217;s own generation in so-&gt;tx_result[]; sk-&gt;sk_err<br \/>\n  is raised unconditionally, same as every other error path here.<\/p>\n<p>&#8211; isotp_tx_gen_done()\/isotp_tx_timeout(): always read tx.state (acquire)<br \/>\n  before tx_gen &#8211; the reverse order let a weakly ordered CPU pair a fresh<br \/>\n  tx.state with a stale tx_gen\/tx_result slot.<\/p>\n<p>&#8211; isotp_sendmsg(): wait_tx_done: drain sk_err via sock_error() once we<br \/>\n  have read the result from so-&gt;tx_result[], so an already-reported error<br \/>\n  doesn&#8217;t stay latched for a later poll()\/SO_ERROR.<\/p>\n<p>Also align the remaining lock-free so-&gt;tx.state\/rx.state\/cfecho accesses<br \/>\nand use skb-&gt;hash as unique loopback echo frame indicator.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>can: isotp: fix timer drain order, wakeup handling and tx_gen ordering<\/p>\n<p>This patch is a follow-up to commit cf070fe33bfb (&#8220;can: iso<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-17469","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/17469","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=17469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}