GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel BPF: preemptible bpf_get_stack reuses a per-CPU callchain buffer and writes out of bounds

UnscoredCVE-2026-89580Kernel, userspace & hypervisorcurated

Impact

get_perf_callchain() releases its recursion slot before returning, so nothing keeps the per-CPU perf_callchain_entry reserved while __bpf_get_stack() copies from it. A preemptible BPF program - a non-sleepable raw tracepoint program on a PREEMPT kernel runs under migrate_disable() but not preempt_disable() - can be scheduled out between obtaining the entry and the copy. Another task on the same CPU reuses the buffer and inflates trace->nr, so copy_len exceeds the caller's buffer and the memcpy writes out of bounds in both the plain and build_id paths. The rcu_read_lock() previously taken does not prevent this. GPU nodes run continuous profiling and eBPF observability agents that call bpf_get_stack on hot tracepoints, which is exactly the workload that hits this.

Who can reach it

Local, and requires the ability to load and attach a BPF program - CAP_BPF plus the relevant attach capability, or root. On most fleets that is the node's observability agent rather than a tenant, so the realistic risk is an unstable or compromised agent corrupting kernel memory, not direct tenant escalation.

What to do

Update to a stable kernel that disables preemption around obtaining and copying the callchain entry and defers build-id resolution until afterwards, then drain and reboot the node. As an interim step, restrict CAP_BPF to the observability agent and confirm no tenant workload can attach BPF programs. The record names four stable commits and no fixed release.

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.