CVE-2026-45990: slub: fix data loss and overflow in krealloc()
In the Linux kernel, the following vulnerability has been resolved:
slub: fix data loss and overflow in krealloc()
Commit 2cd8231796b5 ("mm/slub: allow to set node and align in
k[v]realloc") introduced the ability to force a reallocation if the
original object does not satisfy new alignment or NUMA node, even when
the object is being shrunk.
This introduced two bugs in the reallocation fallback path:
1. Data loss during NUMA migration: The jump to 'alloc_new' happens
before 'ks' and 'orig_size' are initialized. As a result, the
memcpy() in the 'alloc_new' block would copy 0 bytes into the new
allocation.
2. Buffer overflow during shrinking: When shrinking an object while
forcing a new alignment, 'new_size' is smaller than the old size.
However, the memcpy() used the old size ('orig_size ?: ks'), leading
to an out-of-bounds write.
The same overflow bug exists in the kvrealloc() fallback path, where the
old bucket size ksize(p) is copied into the new buffer without being
bounded by the new size.
A simple reproducer:
// e.g. add to lkdtm as KREALLOC_SHRINK_OVERFLOW
while (1) {
void *p = kmalloc(128, GFP_KERNEL);
p = krealloc_node_align(p, 64, 256, GFP_KERNEL, NUMA_NO_NODE);
kfree(p);
}
demonstrates the issue:
==================================================================
BUG: KFENCE: out-of-bounds write in memcpy_orig+0x68/0x130
Out-of-bounds write at 0xffff8883ad757038 (120B right of kfence-#47):
memcpy_orig+0x68/0x130
krealloc_node_align_noprof+0x1c8/0x340
lkdtm_KREALLOC_SHRINK_OVERFLOW+0x8c/0xc0 [lkdtm]
lkdtm_do_action+0x3a/0x60 [lkdtm]
...
kfence-#47: 0xffff8883ad756fc0-0xffff8883ad756fff, size=64, cache=kmalloc-64
allocated by task 316 on cpu 7 at 97.680481s (0.021813s ago):
krealloc_node_align_noprof+0x19c/0x340
lkdtm_KREALLOC_SHRINK_OVERFLOW+0x8c/0xc0 [lkdtm]
lkdtm_do_action+0x3a/0x60 [lkdtm]
...
==================================================================
Fix it by moving the old size calculation to the top of __do_krealloc()
and bounding all copy lengths by the new allocation size.
Security readout for executives and security teams
Plain-English summary
CVE-2026-45990 is a Linux kernel memory allocator bug in krealloc()/kvrealloc(). Under specific reallocation cases, the kernel could lose copied data or write past a smaller destination buffer. The public record names upstream stable fixes, but does not provide CVSS, CWE, distro package status, or evidence of active exploitation.
Executive priority
Monitor and patch through normal kernel update channels unless vendor advisories assign higher severity. The issue is kernel memory corruption, but current public evidence lacks active exploitation, CVSS scoring, and clear remote attackability.
Technical view
A prior SLUB change allowed forced reallocation for alignment or NUMA placement during shrink operations. In fallback paths, old-size handling was wrong: one NUMA migration path copied zero bytes, and shrink paths could copy the old bucket size into a smaller allocation. Fixes calculate old size earlier and bound copies by the new allocation size.
Likely exposure
Exposure is likely limited to systems running affected Linux kernel versions or builds containing commit 2cd8231796b5 without the listed stable fixes. Distro impact cannot be concluded from the bundle alone; validate against each vendor kernel package and backport history.
Exploitation context
The bundle includes a kernel test reproducer showing a KFENCE out-of-bounds write. It does not cite public exploitation, KEV listing, privilege requirements, attack surface, or a complete exploit path. Treat exploitability as unproven from available evidence.
Researcher notes
Key research gaps are exploitability, triggerability from unprivileged paths, distro backport status, and whether reachable kernel subsystems commonly request forced alignment or NUMA reallocation while shrinking. The affected version data in the bundle appears incomplete and should not be treated as a full product matrix.
Mitigation direction
Apply vendor kernel updates that include the upstream stable fixes.
If self-building kernels, incorporate the referenced stable commits.
Check Linux distribution advisories for exact affected package versions.
Prioritize systems using custom kernels or out-of-tree kernel modules.
Reboot or live-patch according to vendor kernel update guidance.
Validation and detection
Inventory running kernel versions across Linux fleets.
Confirm whether vendor packages include the referenced stable commits.
Review kernel source or package changelogs for the krealloc()/kvrealloc() fix.
Check whether custom kernels include commit 2cd8231796b5 without follow-up fixes.
Track CVE and vendor advisories for CVSS, CWE, and distro mappings.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-45990 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
May 27, 2026, 12:55 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.