CVE-2026-46029

mm/slab: return NULL early from kmalloc_nolock() in NMI on UP

Published May 27, 2026 CVSS 3.1 · 7 High EPSS < 1% KEV · Not listed
Description
In the Linux kernel, the following vulnerability has been resolved:

mm/slab: return NULL early from kmalloc_nolock() in NMI on UP

On UP kernels (!CONFIG_SMP), spin_trylock() is a no-op that
unconditionally succeeds even when the lock is already held. As a
result, kmalloc_nolock() called from NMI context can re-enter the slab
allocator and acquire n->list_lock that the interrupted context is
already holding, corrupting slab state.

With CONFIG_DEBUG_SPINLOCK on UP, the following BUG is triggered with
the slub_kunit test module:

BUG: spinlock trylock failure on UP on CPU#0, kunit_try_catch/243
[...]
Call Trace:
<NMI>
dump_stack_lvl+0x3f/0x60
do_raw_spin_trylock+0x41/0x50
_raw_spin_trylock+0x24/0x50
get_from_partial_node+0x120/0x4d0
___slab_alloc+0x8a/0x4c0
kmalloc_nolock_noprof+0x164/0x310
[...]
</NMI>

Fix this by returning NULL early when invoked from NMI on a UP kernel.

Analysis

AI-generated

Technical impact

A race condition in the Linux kernel’s slab allocator is triggered when the kmalloc_nolock() function is called from a Non-Maskable Interrupt (NMI) context on single‑processor (UP) kernels where CONFIG_SMP is disabled. On such kernels, spin_trylock() is a no‑op that always succeeds, enabling the allocator to re‑enter and acquire n->list_lock while it is already held by the interrupted context. This re‑entrancy corrupts the internal slab state, leading to kernel crashes. The nature of the flaw is a kernel memory corruption bug that arises from a race condition and improper lock reuse (CWE-364).

Affected Systems

The vulnerability affects all versions of the Linux kernel built with CONFIG_SMP disabled. No specific kernel minor or patch level is listed, so any single‑CPU build derived from a source tree that has not yet integrated the patch is susceptible. This includes legacy or embedded releases that deliberately omit SMP support.

Risk and Exploitability

The EPSS score indicates a very low exploitation probability (<1%), and the vulnerability is not listed in CISA KEV. The CVSS score is 7, indicating a high severity. The likely attack vector is inferred from the description: an attacker would need to trigger an NMI event on a single‑CPU system to invoke kmalloc_nolock() from the NMI context, a scenario that is uncommon in typical production environments but possible in specialized hardware or during kernel debugging. Because the bug corrupts the core memory allocator, the potential impact is high if exploitation is achieved.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the kernel patch that adds a null return guard in kmalloc_nolock() when called from NMI on a UP kernel (commit 5b31044e649e3e54c2caef135c09b371c2fbcd08). Deploy the patched kernel to testing environments before rolling it out in production.
  • If a kernel upgrade is not feasible, rebuild the kernel with CONFIG_SMP enabled. The flaw does not affect SMP builds, so enabling SMP provides a complete functional workaround.
  • As a temporary mitigation, reduce or eliminate NMI traffic on the affected system. Disable unused interrupt‑controller sources or network‑driver interrupts that can raise NMIs, and enable CONFIG_DEBUG_SPINLOCK so that any attempt to reenter the slab allocator under NMI triggers a BUG, providing early detection and preventing silent corruption.

Generated by OpenCVE AI on June 17, 2026 at 22:04 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Ubuntu USN Ubuntu USN USN-8488-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8489-1 Linux kernel (OEM) vulnerabilities
Ubuntu USN Ubuntu USN USN-8488-2 Linux kernel (Raspberry Pi) vulnerabilities
Ubuntu USN Ubuntu USN USN-8507-1 Linux kernel (NVIDIA) vulnerabilities
Ubuntu USN Ubuntu USN USN-8569-1 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-8603-1 Linux kernel (Azure) vulnerabilities
History
Type Values Removed Values Added
Weaknesses NVD-CWE-noinfo
CPEs cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:*
Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'}

Type Values Removed Values Added
Weaknesses CWE-250
CWE-362
CWE-416
Type Values Removed Values Added
Weaknesses CWE-250
CWE-362
CWE-416
Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: mm/slab: return NULL early from kmalloc_nolock() in NMI on UP On UP kernels (!CONFIG_SMP), spin_trylock() is a no-op that unconditionally succeeds even when the lock is already held. As a result, kmalloc_nolock() called from NMI context can re-enter the slab allocator and acquire n->list_lock that the interrupted context is already holding, corrupting slab state. With CONFIG_DEBUG_SPINLOCK on UP, the following BUG is triggered with the slub_kunit test module: BUG: spinlock trylock failure on UP on CPU#0, kunit_try_catch/243 [...] Call Trace: <NMI> dump_stack_lvl+0x3f/0x60 do_raw_spin_trylock+0x41/0x50 _raw_spin_trylock+0x24/0x50 get_from_partial_node+0x120/0x4d0 ___slab_alloc+0x8a/0x4c0 kmalloc_nolock_noprof+0x164/0x310 [...] </NMI> Fix this by returning NULL early when invoked from NMI on a UP kernel.
Title mm/slab: return NULL early from kmalloc_nolock() in NMI on UP
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References
Weaknesses

Sources

Status
PUBLISHED
Assigner
Linux
Published
Updated
Aug 5, 2026, 12:29 PM
Reserved
May 13, 2026, 3:03 PM
Status
Analyzed
Published
May 27, 2026, 2:17 PM
Modified
Jun 17, 2026, 10:52 AM
Severity
Public date
May 27, 2026, 12:00 AM