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

nvmet-tcp: check INIT_FAILED before nvmet_req_uninit in digest error path

In nvmet_tcp_try_recv_ddgst(), when a data digest mismatch is detected,
nvmet_req_uninit() is called unconditionally. However, if the command
arrived via the nvmet_tcp_handle_req_failure() path, nvmet_req_init()
had returned false and percpu_ref_tryget_live() was never executed. The
unconditional percpu_ref_put() inside nvmet_req_uninit() then causes a
refcount underflow, leading to a WARNING in
percpu_ref_switch_to_atomic_rcu, a use-after-free diagnostic, and
eventually a permanent workqueue deadlock.

Check cmd->flags & NVMET_TCP_F_INIT_FAILED before calling
nvmet_req_uninit(), matching the existing pattern in
nvmet_tcp_execute_request().
Published: 2026-07-27
Score: 9.8 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Linux kernel contains a bug in the nvmet-tcp module that can be triggered when a data digest mismatch occurs. During the error path, a request that has previously failed to initialize is unconditionally uninitialized, causing a reference count underflow. This leads to a warning in the reference switching code, a diagnostic that indicates a use‑after‑free, and ultimately a permanent workqueue deadlock that can make the host unresponsive. The weakness is a classic use‑after‑free scenario where a kernel reference counter is decremented without being properly initialized.

Affected Systems

Linux kernel users implementing NVMe‑over‑TCP clients or servers are affected. The vulnerability applies to any kernel build that includes the nvmet‑tcp implementation, as indicated by the CPE reference for any Linux kernel version.

Risk and Exploitability

The vulnerability is a local or network-based denial of service; the attacker would need to supply a crafted NVMe request that triggers the digest mismatch. Exact exploitation conditions are inferred from the code context: a client that can send malformed data to the host. The exploit is not known to be publicly available, and the EPSS score is <1%. The KEV status indicates the vulnerability is not listed in the CISA KEV catalog. The CVSS score is 9.8, and the permanent deadlock indicates a high impact should the flaw be abused.

Generated by OpenCVE AI on August 2, 2026 at 11:47 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to a Linux kernel version that includes the nvmet‑tcp digest error path patch.
  • If an immediate kernel upgrade is not feasible, patch the source to add a check for the INIT_FAILED flag before calling nvmet_req_uninit(), mirroring the handling in nvmet_tcp_execute_request() as shown in the fix commit.
  • As a temporary protective measure, consider disabling or tightly restricting NVMe‑over‑TCP traffic on the affected host until the patch is applied.

Generated by OpenCVE AI on August 2, 2026 at 11:47 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4717-1 linux security update
Debian DLA Debian DLA DLA-4720-1 linux security update
Debian DLA Debian DLA DLA-4723-1 linux-6.1 security update
Debian DLA Debian DLA DLA-4724-1 linux-6.12 new package
Debian DSA Debian DSA DSA-6405-1 linux security update
History

Thu, 30 Jul 2026 06:15:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

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

cvssV3_1

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


Wed, 29 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-911
References
Metrics threat_severity

None

cvssV3_1

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

threat_severity

Important


Mon, 27 Jul 2026 07:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: check INIT_FAILED before nvmet_req_uninit in digest error path In nvmet_tcp_try_recv_ddgst(), when a data digest mismatch is detected, nvmet_req_uninit() is called unconditionally. However, if the command arrived via the nvmet_tcp_handle_req_failure() path, nvmet_req_init() had returned false and percpu_ref_tryget_live() was never executed. The unconditional percpu_ref_put() inside nvmet_req_uninit() then causes a refcount underflow, leading to a WARNING in percpu_ref_switch_to_atomic_rcu, a use-after-free diagnostic, and eventually a permanent workqueue deadlock. Check cmd->flags & NVMET_TCP_F_INIT_FAILED before calling nvmet_req_uninit(), matching the existing pattern in nvmet_tcp_execute_request().
Title nvmet-tcp: check INIT_FAILED before nvmet_req_uninit in digest error path
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-08-05T12:42:44.214Z

Reserved: 2026-07-19T15:36:31.795Z

Link: CVE-2026-64534

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-07-27T08:16:22.643

Modified: 2026-08-05T08:16:35.860

Link: CVE-2026-64534

cve-icon Redhat

Severity : Important

Publid Date: 2026-07-27T00:00:00Z

Links: CVE-2026-64534 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-02T12:00:03Z

Weaknesses
  • CWE-911

    Improper Update of Reference Count