CVE-2026-98150

CVE-2026-98150

High · published September 25, 2026

CVSS v3.1
7.0
EPSS
0%
Percentile
0.9
In the wild
Unconfirmed
What it is

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

bpf: Fix BPF_F_CPU validation for sparse CPU IDs

BPF_F_CPU stores the target CPU ID in the upper 32 bits of the map

operation flags. bpf_map_check_op_flags() currently compares that ID

with num_possible_cpus(), which is the number of possible CPUs rather

than a bound on CPU IDs.

On an arm64 QEMU guest with a CPU device-tree hole, the possible CPU

mask was 0,2-3. A userspace program using raw bpf() syscalls creates

a BPF_MAP_TYPE_PERCPU_ARRAY and performs update and lookup operations

for each CPU by setting BPF_F_CPU and the CPU ID in the flags.

With the old check, CPU 1 is incorrectly accepted while valid CPU 3 is

rejected with -ERANGE. The CPU 1 update then reaches the per-CPU map

access path and triggers:

Unable to handle kernel paging request at virtual address ...

pc : __pi_memcpy_generic+0x5c/0x22c

lr : bpf_percpu_array_update+0x2dc/0x2e8

Call trace:

__pi_memcpy_generic

bpf_map_update_value

map_update_elem

__sys_bpf

Check the CPU ID against nr_cpu_ids and cpu_possible() instead. This

rejects CPU IDs outside the valid range and CPUs absent from the

possible mask, while allowing valid sparse CPU IDs.

The record
Technical detail
CVSS v3.1
7.0 · HIGH
Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00101 · 0.9th percentile
Published
2026-09-25T15:17Z
Affected products (2)
ProductVersionsFixed in
linux/linux_kernel≥ 7.0, < 7.2.77.2.7
linux/linux_kernelall versions—
References (2)
EPSS history
Timeline
  • 27 SEP 03:28Z
    EPSS moved — → 0%
    epss
  • 25 SEP 10:36Z
    bpf: Fix BPF_F_CPU validation for sparse CPU IDs
    cvelistv5