CVE-2025-37807 json
bpf: Fix kmemleak warning for percpu hashmap
published 2025-05-08 18 mo ago modified 2026-11-05 3 d ago also EUVD-2025-13986
- cvss
- 5.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 16%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix kmemleak warning for percpu hashmap
Vlad Poenaru reported the following kmemleak issue:
unreferenced object 0x606fd7c44ac8 (size 32): backtrace (crc 0): pcpu_alloc_noprof+0x730/0xeb0 bpf_map_alloc_percpu+0x69/0xc0 prealloc_init+0x9d/0x1b0 htab_map_alloc+0x363/0x510 map_create+0x215/0x3a0 __sys_bpf+0x16b/0x3e0 __x64_sys_bpf+0x18/0x20 do_syscall_64+0x7b/0x150 entry_SYSCALL_64_after_hwframe+0x4b/0x53
Further investigation shows the reason is due to not 8-byte aligned store of percpu pointer in htab_elem_set_ptr(): *(void __percpu **)(l->key + key_size) = pptr;
Note that the whole htab_elem alignment is 8 (for x86_64). If the key_size is 4, that means pptr is stored in a location which is 4 byte aligned but not 8 byte aligned. In mm/kmemleak.c, scan_block() scans the memory based on 8 byte stride, so it won't detect above pptr, hence reporting the memory leak.
In htab_map_alloc(), we already have
htab->elem_size = sizeof(struct htab_elem) + round_up(htab->map.key_size, 8); if (percpu) htab->elem_size += sizeof(void *); else htab->elem_size += round_up(htab->map.value_size, 8);
So storing pptr with 8-byte alignment won't cause any problem and can fix kmemleak too.
The issue can be reproduced with bpf selftest as well: 1. Enable CONFIG_DEBUG_KMEMLEAK config 2. Add a getchar() before skel destroy in test_hash_map() in prog_tests/for_each.c. The purpose is to keep map available so kmemleak can be detected. 3. run './test_progs -t for_each/hash_map &' and a kmemleak should be reported.
Patch / fix
- Linux Linux 6.1.191, 6.6.160, 6.12.26, 6.14.5, 6.15
- linux Debian 14, Debian 13 6.12.27-1
debian advisories DEBIAN-CVE-2025-37807
- linux-gcp-6.14 Ubuntu 24.04 LTS 6.14.0-1011.11~24.04.1
- linux-nvidia-tegra Ubuntu 24.04 LTS 6.8.0-1036.39
- linux-realtime-6.14 Ubuntu Pro Realtime 24.04 LTS 6.14.0-1010.10~24.04.1
ubuntu advisories UBUNTU-CVE-2025-37807
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- git.kernel.org/stable/c/c5f4b04e1838b9eec426d80500af49cff8631762 commit
- git.kernel.org/stable/c/25014e3dfa6d2fb95c920b9e6b2f0b303baa4533 commit
- git.kernel.org/stable/c/7758e308aeda1038aba1944f7302d34161b3effe commit
- git.kernel.org/stable/c/1f1c29aa1934177349c17e3c32e68ec38a7a56df commit
- git.kernel.org/stable/c/11ba7ce076e5903e7bdc1fd1498979c331b3c286 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2025-37807 updated cvss 6.0
kernel: bpf: Fix kmemleak warning for percpu hashmap
-
Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernelaffected: no fix available “Fix deferred”
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 3 d ago
Exploit prediction
0.25% chance of exploitation in the next 30 days, higher than 16% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-401 Missing Release of Memory after Effective Lifetime
- Technology feeds
References
- git.kernel.org /stable/c/c5f4b04e1838b9eec426d80500af49cff8631762
- git.kernel.org /stable/c/25014e3dfa6d2fb95c920b9e6b2f0b303baa4533
-
git.kernel.org
/stable/c/7758e308aeda1038aba1944f7302d34161b3effe
patch
-
git.kernel.org
/stable/c/1f1c29aa1934177349c17e3c32e68ec38a7a56df
patch
-
git.kernel.org
/stable/c/11ba7ce076e5903e7bdc1fd1498979c331b3c286
patch
Sources
- CVE List CVE-2025-37807
- NVD CVE-2025-37807
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.