UBUNTU-CVE-2025-37807: Low severity ubuntu/linux-azure vulnerability
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): pcpuallocnoprof+0x730/0xeb0 bpfmapallocpercpu+0x69/0xc0 preallocinit+0x9d/0x1b0 htabmapalloc+0x363/0x510 mapcreate+0x215/0x3a0 sysbpf+0x16b/0x3e0 x64sysbpf+0x18/0x20 dosyscall64+0x7b/0x150 entrySYSCALL64afterhwframe+0x4b/0x53 Further investigation shows the reason is due to not 8-byte aligned store of percpu pointer in htabelemsetptr(): (void percpu )(l->key + keysize) = pptr; Note that the whole htabelem alignment is 8 (for x8664). If the keysize is 4, that means pptr is stored in a location which is 4 byte aligned but not 8 byte aligned. In mm/kmemleak.c, scanblock() scans the memory based on 8 byte stride, so it won't detect above pptr, hence reporting the memory leak. In htabmapalloc(), we already have htab->elemsize = sizeof(struct htabelem) + roundup(htab->map.keysize, 8); if (percpu) htab->elemsize += sizeof(void ); else htab->elemsize += roundup(htab->map.valuesize, 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 CONFIGDEBUGKMEMLEAK config 2. Add a getchar() before skel destroy in testhashmap() in progtests/foreach.c. The purpose is to keep map available so kmemleak can be detected. 3. run './testprogs -t foreach/hashmap &' and a kmemleak should be reported.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-gcp-6.14to a version that resolves this vulnerability.Fixed in 6.14.0-1011.11~24.04.1 - Upgrade
Upgrade
ubuntu/linux-nvidia-tegrato a version that resolves this vulnerability.Fixed in 6.8.0-1036.39 - Upgrade
Upgrade
ubuntu/linux-realtime-6.14to a version that resolves this vulnerability.Fixed in 6.14.0-1010.10~24.04.1 - Configuration
Enable the CONFIG_DEBUG_KMEMLEAK kernel configuration option.
Linux kernel CONFIG_DEBUG_KMEMLEAK = enabled - Operational
In prog_tests/for_each.c, add a getchar() before skel destroy in test_hash_map() so the map remains available while kmemleak detection runs.