Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-72221

sunrpc: wait for in-flight TLS handshake callback when cancel loses race
Back to all
CVE

CVE-2026-72221

sunrpc: wait for in-flight TLS handshake callback when cancel loses race

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

sunrpc: wait for in-flight TLS handshake callback when cancel loses race

When waitforcompletioninterruptibletimeout() in

svctcphandshake() returns 0 (timeout) or -ERESTARTSYS (signal) and

tlshandshakecancel() then returns false, handshake_complete() has

won the cancellation race: it has set HANDSHAKEFREQ_COMPLETED and

is about to invoke svctcphandshake_done(), but the callback's

side effects on xptflags and on svsk->skhandshake_done have not

yet committed.

The current code reads xpt_flags immediately to decide whether the

session succeeded. Two races result.

If the callback has executed setbit(XPTTLS_SESSION) but not yet

clearbit(XPTHANDSHAKE), svctcphandshake() sees a session,

enqueues the transport, and returns. svcxprtreceived() then

clears XPT_BUSY, a worker thread picks the transport up, the

dispatcher in svchandlexprt() observes XPT_HANDSHAKE still set,

and xpohandshake is invoked a second time. That svctcp_handshake()

calls initcompletion(&svsk->skhandshake_done) while the original

callback concurrently calls complete_all() on it, corrupting the

embedded swait_queue.

If the callback has set HANDSHAKEFREQ_COMPLETED but not yet

entered svctcphandshakedone(), svctcp_handshake() reads

XPTTLSSESSION as clear and tears the connection down even though

the handshake is about to succeed.

Wait for the callback to commit before inspecting xpt_flags. The

completion is guaranteed to fire because handshake_complete()

invokes svctcphandshake_done() unconditionally once it has set

HANDSHAKEFREQ_COMPLETED.

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
9.8
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
0
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
-

Related Resources

No items found.

References

https://git.kernel.org/stable/c/0d8ceb39884148dc7a2fdf71e1cac5961ed1d2b9, https://git.kernel.org/stable/c/65b23bec1fca6e9ebdc3e6041ebf8c6ab074141b, https://git.kernel.org/stable/c/a4f878e8ecd729ccf2e50993444e217583adeace, https://git.kernel.org/stable/c/d00e32f84ca1a77cb67a3fbf59f58dada95f5a21, https://git.kernel.org/stable/c/e0f4691d42a54d359d8b64509fd9ab938d4f2a33, https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72221.json, https://nvd.nist.gov/vuln/detail/CVE-2026-72221, https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Severity

9.8

CVSS Score
0
10

Basic Information

Base CVSS
9.8
EPSS Probability
0.00626%
EPSS Percentile
0.47405%
Introduced Version
b3cbf98e2fdf3cb147a95161560cd25987284330,6.4.0,6.7.0,6.13.0,6.19.0,0
Fix Available
d00e32f84ca1a77cb67a3fbf59f58dada95f5a21,6.6.145,6.12.97,6.18.40,7.1.5,6.12.100-1

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading