Description
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.
Published: 2026-10-18
Score: n/a
EPSS: n/a
KEV: No
Impact: Kernel memory corruption leading to privilege escalation
Action: Apply patch
AI Analysis

Impact

The vulnerability is a use‑after‑free in the Linux kernel fprobe subsystem. When an fprobe handler runs while RCU is not watching, synchronize_rcu() fails to wait for those executions, allowing the handler to free memory that is still in use. An attacker could trigger a kernel crash or potentially exploit the memory corruption to execute arbitrary code with kernel privileges. This flaw arises from improper use of RCU synchronization and results in potential denial of service or privilege escalation. The weakness is a use‑after‑free error (CWE‑416) exacerbated by a race condition (CWE‑367).

Affected Systems

Affected systems are Linux kernels that have not yet been patched to include the guard(rcu_sched_notrace) change. This includes all common distribution kernels (e.g., Ubuntu, CentOS, RedHat) running versions prior to the commit that introduced the fix.

Risk and Exploitability

CVSS and EPSS scores are not available and the vulnerability is not listed in KEV. The likely attack vector is local, requiring an attacker with the ability to register custom fprobe handlers via BPF kprobe‑multi or similar mechanisms. If such access is granted, the use‑after‑free could lead to privilege escalation. No active exploits have been published, but the absence of EPSS suggests a low probability of widespread exploitation. The risk is moderate‑to‑high for systems that run unpatched kernels and permit untrusted code execution in the kernel.

Generated by OpenCVE AI on October 18, 2026 at 20:58 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a release that includes the fprobe RCU guard patch.
  • If a kernel upgrade cannot be performed immediately, disable BPF kprobe‑multi or otherwise prevent untrusted users from registering new fprobe handlers by restricting CAP_SYS_ADMIN privileges.
  • Continuously monitor system logs for fprobe‑related use‑after‑free errors and investigate any suspicious BPF activity.

Generated by OpenCVE AI on October 18, 2026 at 20:58 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 18 Oct 2026 21:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-367
CWE-416

Sun, 18 Oct 2026 16:00:00 +0000

Type Values Removed Values Added
Description 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.
Title fprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-18T15:51:22.271Z

Reserved: 2026-09-25T10:25:14.376Z

Link: CVE-2026-98861

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-18T16:17:40.573

Modified: 2026-10-18T16:17:40.573

Link: CVE-2026-98861

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-18T21:00:10Z

Weaknesses
  • CWE-367

    Time-of-check Time-of-use (TOCTOU) Race Condition

  • CWE-416

    Use After Free