CVE-2026-46029 (GCVE-0-2026-46029)

Vulnerability from cvelistv5 – Published: 2026-05-27 12:56 – Updated: 2026-08-05 12:29
VLAI
Title
mm/slab: return NULL early from kmalloc_nolock() in NMI on UP
Summary
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.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: af92793e52c3a99b828ed4bdd277fd3e11c18d08 , < a8d95d274be241ad21f6523bf2d6ba0d7d7e46b7 (git)
Affected: af92793e52c3a99b828ed4bdd277fd3e11c18d08 , < d66553204a15bdb257d9ef8aca1e12f5fbb910b2 (git)
Affected: af92793e52c3a99b828ed4bdd277fd3e11c18d08 , < 5b31044e649e3e54c2caef135c09b371c2fbcd08 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.18
Unaffected: 0 , < 6.18 (semver)
Unaffected: 6.18.27 , ≤ 6.18.* (semver)
Unaffected: 7.0.4 , ≤ 7.0.* (semver)
Unaffected: 7.1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "mm/slub.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a8d95d274be241ad21f6523bf2d6ba0d7d7e46b7",
              "status": "affected",
              "version": "af92793e52c3a99b828ed4bdd277fd3e11c18d08",
              "versionType": "git"
            },
            {
              "lessThan": "d66553204a15bdb257d9ef8aca1e12f5fbb910b2",
              "status": "affected",
              "version": "af92793e52c3a99b828ed4bdd277fd3e11c18d08",
              "versionType": "git"
            },
            {
              "lessThan": "5b31044e649e3e54c2caef135c09b371c2fbcd08",
              "status": "affected",
              "version": "af92793e52c3a99b828ed4bdd277fd3e11c18d08",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "mm/slub.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.18"
            },
            {
              "lessThan": "6.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.27",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.27",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.4",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm/slab: return NULL early from kmalloc_nolock() in NMI on UP\n\nOn UP kernels (!CONFIG_SMP), spin_trylock() is a no-op that\nunconditionally succeeds even when the lock is already held. As a\nresult, kmalloc_nolock() called from NMI context can re-enter the slab\nallocator and acquire n-\u003elist_lock that the interrupted context is\nalready holding, corrupting slab state.\n\nWith CONFIG_DEBUG_SPINLOCK on UP, the following BUG is triggered with\nthe slub_kunit test module:\n\n  BUG: spinlock trylock failure on UP on CPU#0, kunit_try_catch/243\n  [...]\n  Call Trace:\n   \u003cNMI\u003e\n   dump_stack_lvl+0x3f/0x60\n   do_raw_spin_trylock+0x41/0x50\n   _raw_spin_trylock+0x24/0x50\n   get_from_partial_node+0x120/0x4d0\n   ___slab_alloc+0x8a/0x4c0\n   kmalloc_nolock_noprof+0x164/0x310\n   [...]\n   \u003c/NMI\u003e\n\nFix this by returning NULL early when invoked from NMI on a UP kernel."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The only callers reaching NMI-context kmalloc_nolock() are local BPF programs (perf events) or in-kernel module code; there is no remote/network path to this allocator routine.\nAC:H - The bug only manifests on rare non-default uniprocessor (!CONFIG_SMP) kernels, and additionally requires the NMI to fire during the narrow window in which the interrupted context holds n-\u003elist_lock \u2014 both conditions are beyond the attacker\u0027s control.\nPR:L - Running code in NMI context that calls kmalloc_nolock() requires attaching a BPF program to a hardware perf event (CAP_BPF/CAP_PERFMON), which are sub-root capabilities delegable to confined tracing/profiling service accounts rather than full root.\nUI:N - Triggering the NMI-context allocation requires no action from any other user or victim.\nS:U - The slab-state corruption stays within the kernel\u0027s own security authority; no cross-boundary (VM/IOMMU) escape is involved.\nC:H - Re-entrant slab list/freelist corruption is a powerful primitive that can produce overlapping allocations and be leveraged for kernel memory disclosure.\nI:H - Corruption of SLUB partial-list/freelist metadata is a well-known basis for arbitrary-write primitives and control-flow hijacking.\nA:H - The corrupted slab state (or the DEBUG_SPINLOCK BUG) leads to kernel oops/panic, a full availability loss."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:29:13.390Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/a8d95d274be241ad21f6523bf2d6ba0d7d7e46b7"
        },
        {
          "url": "https://git.kernel.org/stable/c/d66553204a15bdb257d9ef8aca1e12f5fbb910b2"
        },
        {
          "url": "https://git.kernel.org/stable/c/5b31044e649e3e54c2caef135c09b371c2fbcd08"
        }
      ],
      "title": "mm/slab: return NULL early from kmalloc_nolock() in NMI on UP",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-46029",
    "datePublished": "2026-05-27T12:56:38.376Z",
    "dateReserved": "2026-05-13T15:03:33.093Z",
    "dateUpdated": "2026-08-05T12:29:13.390Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-46029",
      "date": "2026-09-30",
      "epss": "0.00153",
      "percentile": "0.03798"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "mm/slub.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "a8d95d274be241ad21f6523bf2d6ba0d7d7e46b7",
                    "status": "affected",
                    "version": "af92793e52c3a99b828ed4bdd277fd3e11c18d08",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "d66553204a15bdb257d9ef8aca1e12f5fbb910b2",
                    "status": "affected",
                    "version": "af92793e52c3a99b828ed4bdd277fd3e11c18d08",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "5b31044e649e3e54c2caef135c09b371c2fbcd08",
                    "status": "affected",
                    "version": "af92793e52c3a99b828ed4bdd277fd3e11c18d08",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "mm/slub.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.18"
                  },
                  {
                    "lessThan": "6.18",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.27",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.0.*",
                    "status": "unaffected",
                    "version": "7.0.4",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "1A10DA86-4154-4102-9D63-807CF10A4352",
                    "versionEndExcluding": "6.18.27",
                    "versionStartIncluding": "6.18",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "CDB78D6D-22C3-4154-B0D0-94AF1CE5C2E3",
                    "versionEndExcluding": "7.0.4",
                    "versionStartIncluding": "6.19",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:*",
                    "matchCriteriaId": "B1EF7059-E670-45F4-B422-54C40FA86390",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm/slab: return NULL early from kmalloc_nolock() in NMI on UP\n\nOn UP kernels (!CONFIG_SMP), spin_trylock() is a no-op that\nunconditionally succeeds even when the lock is already held. As a\nresult, kmalloc_nolock() called from NMI context can re-enter the slab\nallocator and acquire n-\u003elist_lock that the interrupted context is\nalready holding, corrupting slab state.\n\nWith CONFIG_DEBUG_SPINLOCK on UP, the following BUG is triggered with\nthe slub_kunit test module:\n\n  BUG: spinlock trylock failure on UP on CPU#0, kunit_try_catch/243\n  [...]\n  Call Trace:\n   \u003cNMI\u003e\n   dump_stack_lvl+0x3f/0x60\n   do_raw_spin_trylock+0x41/0x50\n   _raw_spin_trylock+0x24/0x50\n   get_from_partial_node+0x120/0x4d0\n   ___slab_alloc+0x8a/0x4c0\n   kmalloc_nolock_noprof+0x164/0x310\n   [...]\n   \u003c/NMI\u003e\n\nFix this by returning NULL early when invoked from NMI on a UP kernel."
          }
        ],
        "id": "CVE-2026-46029",
        "lastModified": "2026-06-17T10:52:55.720",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.0,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.0,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-05-27T14:17:21.563",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/5b31044e649e3e54c2caef135c09b371c2fbcd08"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/a8d95d274be241ad21f6523bf2d6ba0d7d7e46b7"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/d66553204a15bdb257d9ef8aca1e12f5fbb910b2"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Analyzed",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "NVD-CWE-noinfo"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "None",
      "current_release_date": "2026-06-28T07:40:37+00:00",
      "cve": "CVE-2026-46029",
      "id": "CVE-2026-46029",
      "initial_release_date": "2026-05-27T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: mm/slab: return NULL early from kmalloc_nolock() in NMI on UP",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-46029.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-27T16:57:04Z",
      "cve": "CVE-2026-46029",
      "id": "CVE-2026-46029",
      "initial_release_date": "2026-05-28T03:54:05Z",
      "product_status:known_not_affected": "299",
      "product_status:recommended": "4",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-46029",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-46029.json",
      "version": "8"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…