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

bpf: zero extend the result of an arena 32-bit cmpxchg

bpf_convert_ctx_accesses() rewrites an atomic on an arena pointer from
BPF_STX | BPF_ATOMIC to BPF_STX | BPF_PROBE_ATOMIC, and it runs before
bpf_opt_subreg_zext_lo32_rnd_hi32().

That pass emits an explicit zero extension for a 32-bit cmpxchg even
when bpf_jit_needs_zext() is false. This is done because on some
architectures 32-bit cmpxchg requires explicit zero extension for the
dst register. E.g. on x86-64 'lock cmpxchg' does not change the %eax
if comparison is successful, while BPF semantics declare that each
operation on a 32-bit register zero extends it's upper half.

is_cmpxchg_insn() matches BPF_MODE == BPF_ATOMIC only, so an arena
cmpxchg misses said zero extension adjustment. This patch adjusts
is_cmpxchg_insn() to match BPF_PROBE_ATOMIC alongside BPF_ATOMIC.
Published: 2026-09-25
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Kernel memory corruption
Action: Apply patch
AI Analysis

Impact

The BPF compiler in the Linux kernel failed to apply a mandatory zero‑extension after a 32‑bit compare‑and‑swap (cmpxchg) operation. This oversight means stale high‑order bytes can remain in kernel registers when the operation succeeds, violating BPF semantics that require each 32‑bit register operation to be zero‑extended. The resulting stale data can corrupt kernel memory during atomic updates, which is a core memory corruption flaw and is mapped to CWE‑681.

Affected Systems

All Linux kernel versions that include the BPF subsystem before the commit that introduced the zero‑extension fix are affected. This includes 64‑bit deployments on x86‑64 and ARM64 architectures where 32‑bit cmpxchg requires explicit zero‑extension. Any distribution shipping such kernels without the patch, including older or backported releases, remains vulnerable.

Risk and Exploitability

The CVSS score of 5.5 indicates moderate severity, and the EPSS score of <1% suggests a very low real‑world exploitation probability. The vulnerability is not listed in CISA KEV. Based on the description, it is inferred that an attacker must have the ability to load a custom BPF program, which is typically limited to privileged users or kernel module operations. Even though exploitation is difficult, a successful exploit could enable kernel memory corruption, leading to privilege escalation or denial of service.

Generated by OpenCVE AI on September 30, 2026 at 13:49 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the kernel to a version that contains the commit that applies the zero‑extension fix.
  • If the system uses an older kernel, apply the upstream patch or a vendor‑backported fix that includes the correction.
  • If an immediate kernel upgrade is unavailable, restrict BPF program loading to privileged users or disable BPF loading entirely by removing the bpf module or unmounting the BPF filesystem until the fix can be applied.

Generated by OpenCVE AI on September 30, 2026 at 13:49 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 15 Oct 2026 13:30:00 +0000


Tue, 06 Oct 2026 13:00:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:o:linux:linux_kernel:7.3:rc1:*:*:*:*:*:*

Wed, 30 Sep 2026 10:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-704

Tue, 29 Sep 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-681
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


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

Type Values Removed Values Added
Weaknesses CWE-704

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: zero extend the result of an arena 32-bit cmpxchg bpf_convert_ctx_accesses() rewrites an atomic on an arena pointer from BPF_STX | BPF_ATOMIC to BPF_STX | BPF_PROBE_ATOMIC, and it runs before bpf_opt_subreg_zext_lo32_rnd_hi32(). That pass emits an explicit zero extension for a 32-bit cmpxchg even when bpf_jit_needs_zext() is false. This is done because on some architectures 32-bit cmpxchg requires explicit zero extension for the dst register. E.g. on x86-64 'lock cmpxchg' does not change the %eax if comparison is successful, while BPF semantics declare that each operation on a 32-bit register zero extends it's upper half. is_cmpxchg_insn() matches BPF_MODE == BPF_ATOMIC only, so an arena cmpxchg misses said zero extension adjustment. This patch adjusts is_cmpxchg_insn() to match BPF_PROBE_ATOMIC alongside BPF_ATOMIC.
Title bpf: zero extend the result of an arena 32-bit cmpxchg
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-15T10:12:08.543Z

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

Link: CVE-2026-98049

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Modified

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

Modified: 2026-10-15T11:18:10.553

Link: CVE-2026-98049

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-25T00:00:00Z

Links: CVE-2026-98049 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T14:00:07Z

Weaknesses
  • CWE-681

    Incorrect Conversion between Numeric Types