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

bpf: Reject tail calls directly from callback frames

A tail call from a non-zero frame is modeled as a return from that frame.
The verifier makes R0 unknown and calls prepare_func_exit() for the taken
branch.

When the current frame is a synchronous callback, prepare_func_exit()
enforces the callback return-value contract and marks R0 precise. Since the
tail-call path synthesized R0 rather than deriving it from an instruction,
precision backtracking reaches the callback-calling instruction with R0
still requested and triggers the "callback unexpected regs" verifier bug.
A CAP_BPF task can therefore cause a WARN and an -EFAULT BPF_PROG_LOAD.

Tail calls reachable from callbacks are already rejected later by
check_max_stack_depth(). Reject a tail call made directly by a callback
before constructing the inconsistent return state, using the existing
diagnostic. Tail calls from ordinary subprograms keep their current
behavior.
Published: 2026-09-25
Score: n/a
EPSS: n/a
KEV: No
Impact: Denial of Service
Action: Immediate Patch
AI Analysis

Impact

A flaw in the Linux kernel’s BPF verifier occurs when a tail call is performed directly from a synchronous callback frame. The verifier treats the call as a return and incorrectly marks register R0 as precise, triggering a verifier bug that leads to a warning and a failure (-EFAULT) when loading the BPF program. This results in the BPF program being rejected, effectively preventing the purpose of the program from running. The vulnerability does not provide direct code execution, but it can cause a denial of service for processes that rely on loading legitimate BPF programs.

Affected Systems

Affected systems are Linux kernel installations. No specific kernel versions are listed in the advisory; therefore the vulnerability may exist in any kernel revision that contains the described logic before the patch. System administrators should consider that any current and previous kernel releases might be impacted until an update is applied.

Risk and Exploitability

The issue requires the attacker to have CAP_BPF capabilities to trigger the bad tail call, implying a local privilege requirement. Because CAP_BPF is a privileged capability, the risk of exploitation is limited to local or compromised users. The CVSS score is not provided, and the EPSS score is unavailable, so the exact likelihood cannot be quantified, but the impact is a denial of service for BPF program loading. The vulnerability is not listed in the CISA KEV catalog, indicating no known widespread exploitation at this time. However, the local nature of the attack vector and the denial of service outcome warrant prompt remediation.

Generated by OpenCVE AI on September 25, 2026 at 15:45 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the fix for this BPF verifier bug.
  • If an immediate kernel upgrade is not possible, restrict use of BPF programs and monitor kernel logs for WARN and EFAULT messages related to BPF_PROG_LOAD failures.
  • Review any custom BPF code to ensure tail calls are not invoked directly from callbacks, as this will trigger the same verifier path.

Generated by OpenCVE AI on September 25, 2026 at 15:45 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 25 Sep 2026 16:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-665

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: bpf: Reject tail calls directly from callback frames A tail call from a non-zero frame is modeled as a return from that frame. The verifier makes R0 unknown and calls prepare_func_exit() for the taken branch. When the current frame is a synchronous callback, prepare_func_exit() enforces the callback return-value contract and marks R0 precise. Since the tail-call path synthesized R0 rather than deriving it from an instruction, precision backtracking reaches the callback-calling instruction with R0 still requested and triggers the "callback unexpected regs" verifier bug. A CAP_BPF task can therefore cause a WARN and an -EFAULT BPF_PROG_LOAD. Tail calls reachable from callbacks are already rejected later by check_max_stack_depth(). Reject a tail call made directly by a callback before constructing the inconsistent return state, using the existing diagnostic. Tail calls from ordinary subprograms keep their current behavior.
Title bpf: Reject tail calls directly from callback frames
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-09-25T10:24:06.001Z

Reserved: 2026-09-25T10:19:56.073Z

Link: CVE-2026-98061

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:35.110

Modified: 2026-09-25T11:17:35.110

Link: CVE-2026-98061

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T16:00:18Z

Weaknesses