{"id":33438,"date":"2026-10-06T20:32:00","date_gmt":"2026-10-06T12:32:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98369"},"modified":"2026-10-06T20:32:00","modified_gmt":"2026-10-06T12:32:00","slug":"cve-2026-98369","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98369","title":{"rendered":"CVE-2026-98369 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: add missing rcu"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: add missing rcu_read_lock(), skb_dst_force() and dev_hold() for xfrm_trans_reinject()<\/p>\n<p>syzbot reported a suspicious RCU usage warning in ip6_pkt_drop():<\/p>\n<p>  WARNING: suspicious RCU usage in ip6_pkt_drop<br \/>\n  include\/net\/addrconf.h:389 suspicious rcu_dereference_check() usage!<\/p>\n<p>  Call Trace:<br \/>\n   __in6_dev_get_safely include\/net\/addrconf.h:389 [inline]<br \/>\n   ip6_pkt_drop+0x596\/0x610 net\/ipv6\/route.c:4620<br \/>\n   ip6_pkt_discard+0x1c\/0x30 net\/ipv6\/route.c:4651<br \/>\n   xfrm_trans_reinject+0x324\/0x630 net\/xfrm\/xfrm_input.c:806<br \/>\n   process_one_work kernel\/workqueue.c:3322 [inline]<br \/>\n   process_scheduled_works+0xa8e\/0x14e0 kernel\/workqueue.c:3405<br \/>\n   worker_thread+0xa47\/0xfb0 kernel\/workqueue.c:3486<\/p>\n<p>When commit 4f4920669d21 (&#8220;xfrm: Reinject transport-mode packets through<br \/>\nworkqueue&#8221;) converted xfrm_trans_reinject from a tasklet to a workqueue,<br \/>\nthe reinjection loop ceased running in softirq context. Workqueue workers<br \/>\nrun in process context where local_bh_disable() does not enter an RCU<br \/>\nread-side critical section under CONFIG_PREEMPT_RCU.<\/p>\n<p>Because finish callbacks (such as ip6_rcv_finish) expect to run under an<br \/>\nRCU read lock (performing route lookups, l3mdev lookups, and accessing<br \/>\nRCU-protected data structures), invoking them in workqueue context without<br \/>\nrcu_read_lock() triggers RCU lockdep warnings.<\/p>\n<p>Furthermore, packets queued to the workqueue via xfrm_trans_queue_net()<br \/>\nmay carry non-refcounted (noref) dst entries (e.g. from ip_route_input_noref).<br \/>\nAdditionally, on netdevice unregistration, dst_dev_put() replaces dst-&gt;dev<br \/>\nwith blackhole_netdev, so dst entries do not keep skb-&gt;dev alive while<br \/>\nqueued in the workqueue.<\/p>\n<p>Fix these issues by:<br \/>\n1. Calling skb_dst_force(skb) in xfrm_trans_queue_net() while still in the<br \/>\n   caller&#8217;s RCU section to ensure dst is reference-counted before queuing.<br \/>\n2. Holding a reference on skb-&gt;dev via dev_hold()\/dev_put() across workqueue<br \/>\n   deferral so skb-&gt;dev remains valid during finish() callback processing.<br \/>\n3. Acquiring rcu_read_lock() around the finish callback invocation loop in<br \/>\n   xfrm_trans_reinject().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: add missing rcu_read_lock(), skb_dst_force() and dev_hold() for xfrm_trans_reinject()<\/p>\n<p>syzbot reported a suspicious RCU usage<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33438","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33438","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=33438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}