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-72222

sunrpc: pin svc_xprt across the asynchronous TLS handshake callback
Back to all
CVE

CVE-2026-72222

sunrpc: pin svc_xprt across the asynchronous TLS handshake callback

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

sunrpc: pin svc_xprt across the asynchronous TLS handshake callback

svctcphandshake() stores the raw svc_xprt pointer in

tlshandshakeargs.ta_data and submits the request through

tlsserverhello_x509(). The handshake core takes only

sockhold(req->hrsk); nothing references the embedding struct

svcsock that svctcphandshakedone() reaches via container_of().

Two close races leave the in-flight callback writing through a freed

svcsock. svcsockfree() calls tlshandshake_cancel() and discards

its return value: a false return means handshake_complete() has

already set HANDSHAKEFREQCOMPLETED but hpdone() may not have

finished, yet svcsockfree() proceeds to kfree(svsk). The

cancel-loser fall-through inside svctcphandshake() itself produces

the same window: when waitforcompletioninterruptibletimeout()

returns <= 0 (timeout or signal) and tlshandshakecancel() returns

false, the function does not drain, returns, and svchandlexprt()

calls svcxprtreceived(), which clears XPT_BUSY and can drop the

last reference. A concurrent close then runs svcsockfree() while

svctcphandshakedone() is still updating xptflags and walking

svsk->skhandshakedone.

The corruption surfaces as setbit/clearbit RMW into the freed

xptflags slab slot and as completeall() walking and writing the

freed waitqueueheadt list embedded in skhandshake_done -- a

slab-corruption primitive, not a benign read. The path is reachable

on any TLS-enabled NFS server whenever a connection close overlaps

the tlshd downcall delivery window; the interruptible wait means

signal delivery suffices, not just SVCHANDSHAKETO expiry.

Take svcxprtget(xprt) immediately before tlsserverhello_x509()

so the in-flight callback owns its own reference. Release it on the

two edges where the callback is guaranteed not to fire -- submission

failure from tlsserverhello_x509() and a successful

tlshandshakecancel() -- and at the tail of

svctcphandshakedone() after completeall().

[cel: rewrote commit message to describe the actual change]

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/083e9c2ec7e8bb13b79c9fd7b337abdd758ecc5f, https://git.kernel.org/stable/c/2d4f97d13fff91e0bc539216be88b884b544d49f, https://git.kernel.org/stable/c/3f9ee75a97a769be258784c22b89657acb5ed9bd, https://git.kernel.org/stable/c/4f988f3a2808fb659f3880c282041ff067acad78, https://git.kernel.org/stable/c/f3b55945dd99f29d83e1965d0141040a35262346, https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72222.json, https://nvd.nist.gov/vuln/detail/CVE-2026-72222, 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.00618%
EPSS Percentile
0.47008%
Introduced Version
b3cbf98e2fdf3cb147a95161560cd25987284330,6.4.0,6.7.0,6.13.0,6.19.0,0
Fix Available
4f988f3a2808fb659f3880c282041ff067acad78,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