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

net/handshake: Use spin_lock_bh for hn_lock

nvmet_tcp_state_change(), a socket callback that runs in BH context,
can reach handshake_req_cancel() via nvmet_tcp_schedule_release_queue()
and tls_handshake_cancel(). handshake_req_cancel() acquires
hn->hn_lock with plain spin_lock(). If a process-context thread on
the same CPU holds hn->hn_lock when a softirq invokes the cancel path,
the lock attempt deadlocks. This is the only caller that invokes
tls_handshake_cancel() from BH context; every other consumer calls it
from process context.

Deferring the cancel to process context in the NVMe target is not
straightforward: nvmet_tcp_schedule_release_queue() must call
tls_handshake_cancel() atomically with its state transition to
DISCONNECTING. If the cancel were deferred, the handshake completion
callback could fire in the window before the cancel runs, observe the
unexpected state, and return without dropping its kref on the queue.
Reworking that interlock is considerably more invasive than hardening
the handshake lock. Convert all hn->hn_lock acquisitions from
spin_lock/spin_unlock to spin_lock_bh/spin_unlock_bh so the lock is
never taken with softirqs enabled.
Published: 2026-07-19
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw lies in the Linux kernel's NVMe target subsystem where a spin lock protecting handshake state (hn_lock) is acquired with spin_lock() while a soft interrupt (softirq) may also attempt to acquire the same lock, leading to a deadlock (CWE‑833). When a process‑context thread holds hn->hn_lock and a BH context invocation of handshake cancellation runs, the lock attempt blocks indefinitely, stopping the kernel thread responsible for the NVMe connection. This results in a denial of service because the kernel becomes unresponsive to further requests and overall system stability is compromised.

Affected Systems

All Linux kernel builds that include the nvmet_tcp driver and the handshake module may be affected until the lock is converted to spin_lock_bh as described in commit 06ab5978866fc2221b910347fd3e510ca8e7b1a4. Administrators should confirm whether their deployed kernel version contains this change, as the advisory does not list specific version ranges.

Risk and Exploitability

The CVSS score of 7.5 indicates a high severity, while the EPSS score of less than 1% signals a low probability of active exploitation. The vulnerability is not included in CISA's KEV catalog. Based on the description, it is inferred that an attacker could trigger the cancellation path by sending crafted NVMe over TCP traffic to a host exposing the service, providing a remote avenue for exploitation. Consequently, systems that expose NVMe target services without adequate protection are at high risk pending remediation.

Generated by OpenCVE AI on August 4, 2026 at 06:25 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel version that includes the patch converting hn_lock acquisitions to spin_lock_bh, such as the commit referenced in the advisory.
  • If the kernel cannot be upgraded immediately, disable the NVMe target service (nvmet_tcp) or restrict network access to the related ports to prevent remote handshake cancellation attempts until the patch is applied.
  • Monitor kernel logs for lockwait, deadlock messages or related errors and plan to apply the patch as soon as it becomes available.

Generated by OpenCVE AI on August 4, 2026 at 06:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Ubuntu USN Ubuntu USN USN-8593-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8603-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8618-1 Linux kernel vulnerabilities
History

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

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

None

threat_severity

Moderate


Mon, 20 Jul 2026 14:45: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'}


Sun, 19 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: net/handshake: Use spin_lock_bh for hn_lock nvmet_tcp_state_change(), a socket callback that runs in BH context, can reach handshake_req_cancel() via nvmet_tcp_schedule_release_queue() and tls_handshake_cancel(). handshake_req_cancel() acquires hn->hn_lock with plain spin_lock(). If a process-context thread on the same CPU holds hn->hn_lock when a softirq invokes the cancel path, the lock attempt deadlocks. This is the only caller that invokes tls_handshake_cancel() from BH context; every other consumer calls it from process context. Deferring the cancel to process context in the NVMe target is not straightforward: nvmet_tcp_schedule_release_queue() must call tls_handshake_cancel() atomically with its state transition to DISCONNECTING. If the cancel were deferred, the handshake completion callback could fire in the window before the cancel runs, observe the unexpected state, and return without dropping its kref on the queue. Reworking that interlock is considerably more invasive than hardening the handshake lock. Convert all hn->hn_lock acquisitions from spin_lock/spin_unlock to spin_lock_bh/spin_unlock_bh so the lock is never taken with softirqs enabled.
Title net/handshake: Use spin_lock_bh for hn_lock
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:37:51.364Z

Reserved: 2026-07-19T07:54:57.025Z

Link: CVE-2026-63980

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

Severity : Moderate

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

Links: CVE-2026-63980 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-04T06:30:05Z

Weaknesses