CVE-2026-98588

bpf, sockmap: Reject max_entries > INT_MAX in sock_map_alloc

State
Published
Severity
Not scored
Published
Oct 18, 2026
Updated
Oct 19, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

bpf, sockmap: Reject max_entries > INT_MAX in sock_map_alloc

sock_map_alloc() only rejects max_entries == 0 and otherwise allows any u32 value. sock_map_free() then walks the sks[] array with a signed int iterator:

int i; for (i = 0; i < stab->map.max_entries; i++) struct sock **psk = &stab->sks[i];

When a SOCKMAP is created with max_entries = 0xffffffff (UINT_MAX), the allocation of 32 GiB can succeed on large-memory hosts. During free the counter reaches 0x80000000, wraps to INT_MIN, is sign-extended by movslq and turned into a ~16 GiB negative offset from stab->sks, pointing far below the allocation.

The faulting access is an xchg() write in sock_map_free(). Without KASAN, the same out-of-bounds write can fault on an unmapped vmalloc page or corrupt an unrelated allocation if that vmalloc address is populated. On a KASAN kernel with CONFIG_KASAN_VMALLOC=y, the shadow check for that address hits an unmapped shadow page and oopses first:

BUG: unable to handle page fault for address: fffff521b59c5a00 RIP: 0010:kasan_check_range+0x107/0x190 Call Trace: sock_map_free+0x93/0x190 map_create+0x68d/0xb30 __sys_bpf+0x21e/0x2e70

Vmcore confirmed stab->map.max_entries == 0xffffffff, stab->sks == 0xffffc911ace2d000, and the faulting address sks + (s64)INT_MIN * 8 exactly at 0xffffc90dace2d000. The same buggy path is reached on the normal close()/bpf_map_free_deferred() path whenever such a map is destroyed.

sock_map_alloc() used to bound its allocation size through bpf_map_charge_init(), but the bound was dropped when rlimit-based memory accounting was removed. Reject max_entries > INT_MAX at creation time so the signed iterator in sock_map_free() never sees a value that would overflow.

Triggered by syzkaller and reproduced on both a 6.6-based KASAN kernel and the upstream v7.3-rc2 kernel.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 0d2c4f9640501ff57ba0be1f5644a02c29a02fa1 to before f4a73f49e256bd835368504462be3b57b03febffAffected
  • 0d2c4f9640501ff57ba0be1f5644a02c29a02fa1 to before c56191af3a578b9cc265fa3bd5fc0752c59c1781Affected
  • 0d2c4f9640501ff57ba0be1f5644a02c29a02fa1 to before 909f761868fda329dc69130ef9eb5b5795bcdf00Affected
  • 0d2c4f9640501ff57ba0be1f5644a02c29a02fa1 to before cc70972ddbf0e3398f2f32624d31db78594d50d8Affected
  • 0d2c4f9640501ff57ba0be1f5644a02c29a02fa1 to before cea597519b9ca6d691c98d92460ead8ece2a07afAffected
  • 0d2c4f9640501ff57ba0be1f5644a02c29a02fa1 to before ba7d627dbc67d62df2fa66d7b41e743c3ace0ec8Affected
  • 0d2c4f9640501ff57ba0be1f5644a02c29a02fa1 to before 814a81c842bd88f6bd8a4ce550d560df071a5d03Affected
LinuxLinux
  • 5.11Affected
  • before 5.11Not affected
  • 5.15.222 through 5.15.*Not affected
  • 6.1.189 through 6.1.*Not affected
  • 6.6.158 through 6.6.*Not affected
  • 6.12.112 through 6.12.*Not affected
  • 6.18.55 through 6.18.*Not affected
  • 7.2.9 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.