{"id":41333,"date":"2026-10-19T00:33:17","date_gmt":"2026-10-18T16:33:17","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98861"},"modified":"2026-10-19T00:33:17","modified_gmt":"2026-10-18T16:33:17","slug":"cve-2026-98861","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98861","title":{"rendered":"CVE-2026-98861 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nfprobe: Use guard(rcu"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>fprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching()<\/p>\n<p>unregister_fprobe() and unregister_fprobe_async() (used by BPF<br \/>\nkprobe-multi) rely on standard RCU grace periods (synchronize_rcu()<br \/>\nand call_rcu()) to wait until in-flight fprobe handlers complete before<br \/>\nfreeing the fprobe.<\/p>\n<p>However, if an fprobe handler executes while RCU is not watching (such<br \/>\nas in the idle loop or nohz_full extended quiescent states), standard<br \/>\nRCU does not track preemption-disabled sections. Consequently,<br \/>\nsynchronize_rcu() does not wait for those executions, which can lead<br \/>\nto a use-after-free if the fprobe is freed immediately after<br \/>\nunregistration. Ensure handlers exit early when !rcu_is_watching().<\/p>\n<p>Furthermore, fprobe_fgraph_entry() and fprobe_ftrace_entry() previously<br \/>\nused guard(rcu)() and rcu_read_lock(), which invoke lockdep on every<br \/>\nhit under CONFIG_PROVE_LOCKING. This adds overhead and can cause lockdep<br \/>\nrecursion if probed functions interact with lockdep.<\/p>\n<p>Since rhltable_lookup() and rhl_for_each_entry_rcu() use<br \/>\nrcu_dereference_all_check() (which checks rcu_read_lock_any_held()),<br \/>\nholding preemption disabled via rcu_read_lock_sched_notrace() is fully<br \/>\nvalid and sufficient so long as rcu_is_watching() is true.<\/p>\n<p>Define and use guard(rcu_sched_notrace)() across fprobe_ftrace_entry(),<br \/>\nfprobe_fgraph_entry(), and fprobe_return(). This eliminates fast-path<br \/>\nrcu_read_lock() and lockdep overhead while guaranteeing safe grace<br \/>\nperiod synchronization.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>fprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching()<\/p>\n<p>unregister_fprobe() and unregister_fprobe_async() (used by BPF<br \/>\nkp<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41333","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41333","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=41333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}