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

nvme: remove stale namespaces by NSID range during scan

nvme_scan_ns_list() drops the stale namespaces in each gap in the
reported NSID list one NSID at a time. Every iteration calls
nvme_find_get_ns() to look the namespace up and removes it if it is
present. The loop runs once per NSID in the gap rather than once per
namespace actually present.

NSIDs are 32-bit, so a target with a sparse NSID space can make a
single gap spin the loop billions of times with nothing to remove.

watchdog: BUG: soft lockup - CPU#4 stuck for 26s!
Workqueue: nvme-wq nvme_scan_work [nvme_core]
RIP: 0010:__srcu_read_unlock+0xb/0x20
Call Trace:
nvme_find_get_ns+0x7d/0xb0 [nvme_core]
nvme_scan_ns_list+0xe8/0x280 [nvme_core]
nvme_scan_work+0x18a/0x280 [nvme_core]
process_one_work+0x197/0x380
worker_thread+0x2fe/0x410
kthread+0xe0/0x100

Rename nvme_remove_invalid_namespaces() to nvme_remove_nsid_range()
and give it an open (start, end) NSID range. ctrl->namespaces is
sorted by NSID, so the whole gap is dropped in a single walk that
stops once end is reached. This bounds the work by the namespaces
that are present instead of by the size of the gap.
Published: 2026-09-25
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service (kernel soft lockup)
Action: Immediate Patch
AI Analysis

Impact

The Linux kernel NVMe driver contains an inefficient loop that removes stale namespaces by iterating over every 32‑bit namespace ID (NSID) in each gap between reported namespaces. When an NVMe controller has a sparse NSID space, this loop can run billions of times, consuming CPU cycles and causing the system to soft‑lockup. The resulting kernel stall prevents normal operation, effectively denying service to all processes that rely on the affected device.

Affected Systems

All Linux installations running a kernel that includes the buggy nvme_scan_ns_list code are affected, regardless of distribution or vendor. The vulnerability is not tied to a specific vendor’s kernel patch set; any kernel older than the fix that introduces the open NSID‑range removal algorithm is susceptible. Specific affected kernel versions are not documented.

Risk and Exploitability

The CVSS score is 7.5, indicating high impact severity. EPSS score is 0.00603, suggesting a very low but non‑zero probability of exploitation, and the vulnerability is not listed in the CISA KEV catalog. Based on the description, it is inferred that an attacker with local control over an NVMe device can supply a deliberately sparse NSID range to trigger the excessive loop. The likely attack vector involves presenting or tampering with an NVMe controller connected to the target. The bug can cause resource exhaustion and a kernel soft lockup, which is a denial‑of‑service that affects the entire system.

Generated by OpenCVE AI on September 29, 2026 at 20:35 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply a Linux kernel update that includes the nvme_scan_ns_list fix to replace the inefficient namespace removal logic.
  • If an upgrade cannot be performed immediately, disable NVMe scanning mechanisms or use a kernel configuration that removes the scan workqueue for NVMe devices, thereby preventing the execution of the buggy loop.
  • As a temporary measure, replace the kernel module with a patched build that implements the open NSID range removal algorithm provided by the upstream fix.

Generated by OpenCVE AI on September 29, 2026 at 20:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4817-1 linux-6.12 security update
Debian DSA Debian DSA DSA-6528-1 linux security update
History

Tue, 29 Sep 2026 13:15:00 +0000


Fri, 25 Sep 2026 22:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-770

Fri, 25 Sep 2026 20:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-770

Fri, 25 Sep 2026 17:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-770

Fri, 25 Sep 2026 15:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

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


Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: nvme: remove stale namespaces by NSID range during scan nvme_scan_ns_list() drops the stale namespaces in each gap in the reported NSID list one NSID at a time. Every iteration calls nvme_find_get_ns() to look the namespace up and removes it if it is present. The loop runs once per NSID in the gap rather than once per namespace actually present. NSIDs are 32-bit, so a target with a sparse NSID space can make a single gap spin the loop billions of times with nothing to remove. watchdog: BUG: soft lockup - CPU#4 stuck for 26s! Workqueue: nvme-wq nvme_scan_work [nvme_core] RIP: 0010:__srcu_read_unlock+0xb/0x20 Call Trace: nvme_find_get_ns+0x7d/0xb0 [nvme_core] nvme_scan_ns_list+0xe8/0x280 [nvme_core] nvme_scan_work+0x18a/0x280 [nvme_core] process_one_work+0x197/0x380 worker_thread+0x2fe/0x410 kthread+0xe0/0x100 Rename nvme_remove_invalid_namespaces() to nvme_remove_nsid_range() and give it an open (start, end) NSID range. ctrl->namespaces is sorted by NSID, so the whole gap is dropped in a single walk that stops once end is reached. This bounds the work by the namespaces that are present instead of by the size of the gap.
Title nvme: remove stale namespaces by NSID range during scan
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-25T14:41:59.133Z

Reserved: 2026-09-25T10:19:56.072Z

Link: CVE-2026-98056

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-25T11:17:34.547

Modified: 2026-09-30T14:10:59.253

Link: CVE-2026-98056

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-25T00:00:00Z

Links: CVE-2026-98056 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-29T20:45:20Z

Weaknesses
  • CWE-606

    Unchecked Input for Loop Condition

  • CWE-770

    Allocation of Resources Without Limits or Throttling