All vulnerabilities
CVE-2026-98049

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

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.12%Chance of exploitation activity in the next 30 days, higher than 1% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in1bb1be18263995b159cf5afad3a05500ba6d2a7bAlso 6bb6ae5ab1beffda51dabf41612f501d07f10fc6, 1c1b476d43a8b6c9bc04600369dd8cc39950d98e and 1 moreCVE List
Published25 Sep 2026Updated 21 Oct 2026CVE List

What fixes it

  • 1bb1be18263995b159cf5afad3a05500ba6d2a7bLinuxCVE List
  • 6bb6ae5ab1beffda51dabf41612f501d07f10fc6LinuxCVE List
  • 1c1b476d43a8b6c9bc04600369dd8cc39950d98eLinuxCVE List
  • 4814ed6406f3493bd554ad046da5f7fc04833571LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

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.

Text from CVE List

Affected versions 10

  • Linuxaffected: d503a04f8bc0c75dc9db9452d8cc79d748afb752 before 1bb1be18263995b159cf5afad3a05500ba6d2a7bCVE List
  • Linuxaffected: d503a04f8bc0c75dc9db9452d8cc79d748afb752 before 6bb6ae5ab1beffda51dabf41612f501d07f10fc6CVE List
  • Linuxaffected: d503a04f8bc0c75dc9db9452d8cc79d748afb752 before 1c1b476d43a8b6c9bc04600369dd8cc39950d98eCVE List
  • Linuxaffected: d503a04f8bc0c75dc9db9452d8cc79d748afb752 before 4814ed6406f3493bd554ad046da5f7fc04833571CVE List
  • Linuxaffected: 6.10CVE List
  • Linuxunaffected: all versions before 6.10CVE List
  • Linuxunaffected: 6.12.114 through 6.12.*CVE List
  • Linuxunaffected: 6.18.57 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 4