GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel BPF: per-CPU map updates accept invalid CPU IDs on sparse CPU masks, corrupting kernel memory

CVSS 7.0CVE-2026-98150Kernel, userspace & hypervisorcurated

Impact

A local user able to call bpf() can target a per-CPU map operation at a CPU ID that exists in the 0..num_possible_cpus() range but is absent from the possible-CPU mask. The per-CPU access path then memcpy()s to an unmapped per-CPU area, which the report shows as a kernel paging fault in bpf_percpu_array_update - a node-level crash, and potentially memory corruption rather than a clean oops. The same check also wrongly rejects valid high CPU IDs on such systems, so BPF-based tooling silently misreads per-CPU state. Exposure is narrow: it needs a host whose possible-CPU mask has holes (the reporter's case was an arm64 guest with a CPU device-tree gap), which is uncommon on bare-metal GPU nodes but can occur on arm64 VMs and partially populated systems. On a GPU node the practical cost is an unplanned reboot of a box that was mid-training, not a tenancy escape - there is no privilege-boundary crossing described.

Who can reach it

Local user on the host or in a container that is permitted the bpf() syscall (CAP_BPF/CAP_SYS_ADMIN in its namespace, or unprivileged BPF where enabled). Requires a kernel whose cpu_possible mask is sparse. Not reachable from the network and not reachable by a tenant pod that cannot load or operate BPF maps.

What to do

Pick up the fixed stable kernel (commits bdc5941f6eee and ed54bf564ac5, which validate the CPU ID against nr_cpu_ids and cpu_possible()) and reboot each node; there is no runtime mitigation for the check itself. Until then, the exposure can be closed operationally by denying bpf() to tenant workloads - drop CAP_BPF/CAP_SYS_ADMIN from pods and keep unprivileged BPF disabled - which leaves only trusted node agents on the path. The advisory names no fixed release numbers beyond the stable commits.

References

Related entries

All Kernel, userspace & hypervisor entries

This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.