Skip to content
Fencer Intel
no cvss —

CVE-2026-98861 json

fprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching()

published 24d ago modified 24d ago also EUVD-2026-103801

cvss
—
not scored
cisa kev
Not listed
not in CISA's catalog
epss
0.2%
EPSS 0.2% chance of exploitation in 30 days, percentile 6%
public exploits
0
none known

Summary

In the Linux kernel, the following vulnerability has been resolved:

fprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching()

unregister_fprobe() and unregister_fprobe_async() (used by BPF kprobe-multi) rely on standard RCU grace periods (synchronize_rcu() and call_rcu()) to wait until in-flight fprobe handlers complete before freeing the fprobe.

However, if an fprobe handler executes while RCU is not watching (such as in the idle loop or nohz_full extended quiescent states), standard RCU does not track preemption-disabled sections. Consequently, synchronize_rcu() does not wait for those executions, which can lead to a use-after-free if the fprobe is freed immediately after unregistration. Ensure handlers exit early when !rcu_is_watching().

Furthermore, fprobe_fgraph_entry() and fprobe_ftrace_entry() previously used guard(rcu)() and rcu_read_lock(), which invoke lockdep on every hit under CONFIG_PROVE_LOCKING. This adds overhead and can cause lockdep recursion if probed functions interact with lockdep.

Since rhltable_lookup() and rhl_for_each_entry_rcu() use rcu_dereference_all_check() (which checks rcu_read_lock_any_held()), holding preemption disabled via rcu_read_lock_sched_notrace() is fully valid and sufficient so long as rcu_is_watching() is true.

Define and use guard(rcu_sched_notrace)() across fprobe_ftrace_entry(), fprobe_fgraph_entry(), and fprobe_return(). This eliminates fast-path rcu_read_lock() and lockdep overhead while guaranteeing safe grace period synchronization.

Patch / fix

  • Linux Linux 6.18.56, 7.1, 7.3
  • linux Debian 14 7.2.10-1

debian advisories DEBIAN-CVE-2026-98861

  • linux Ubuntu 26.04 LTS 7.0.0-43.43
  • linux-aws Ubuntu 26.04 LTS 7.0.0-1017.18
  • linux-gcp Ubuntu 26.04 LTS 7.0.0-1017.19
  • linux-gke Ubuntu 26.04 LTS 7.0.0-1010.11
  • linux-ibm Ubuntu 26.04 LTS 7.0.0-1018.18
  • linux-azure Ubuntu 26.04 LTS 7.0.0-1020.21
  • linux-oracle Ubuntu 26.04 LTS 7.0.0-1016.18
  • linux-aws-7.0 Ubuntu 24.04 LTS 7.0.0-1017.18~24.04.1

ubuntu advisories UBUNTU-CVE-2026-98861

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

Is CVE-2026-98861 in your stack? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.

Check with Fencer

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2026-98861 updated cvss 4.7

kernel: kernel: Denial of Service via fprobe use-after-free

  • Red Hat Enterprise Linux 10 kernel
    affected: workaround, no fix available “Fix deferred”

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

Exploit prediction

0.17% chance of exploitation in the next 30 days, higher than 6% of all scored CVEs (FIRST EPSS, 2026-11-11).

Affected products

  • Linux Linux

Classification

Technology feeds

References

Sources

Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.