PT-2026-65216 · Linux · Linux
CVE-2026-64541
·
Published
2026-07-27
·
Updated
2026-07-27
None
No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
net/smc: fix UAF in smc cdc rx handler() by pinning the socket
smc cdc rx handler() looks up the connection by token under the link
group's conns lock, drops the lock, and then dereferences conn and the
smc sock derived from it, ending in sock hold(&smc->sk) inside
smc cdc msg recv(). No reference is held across the lock release.
The only reference pinning the socket while the connection is
discoverable in the link group is taken in smc lgr register conn()
(sock hold) and dropped in smc lgr unregister conn() (sock put), both
under conns lock. Once the handler drops conns lock, a concurrent
close() -> smc release() -> smc conn free() -> smc lgr unregister conn()
can drop that reference and free the smc sock, so the handler's later
sock hold() runs on freed memory:
WARNING: lib/refcount.c:25 at refcount warn saturate
Workqueue: rxe wq do work
refcount warn saturate (lib/refcount.c:25)
smc cdc msg recv (net/smc/smc cdc.c:430)
smc cdc rx handler (net/smc/smc cdc.c:502)
smc wr rx tasklet fn (net/smc/smc wr.c:445)
tasklet action common (kernel/softirq.c:938)
handle softirqs (kernel/softirq.c:622)
Kernel panic - not syncing: panic on warn set
Only SMC-R is affected. The SMC-D receive tasklet is stopped by
tasklet kill(&conn->rx tsklet) in smc conn free() before the connection
is unregistered, so it cannot run concurrently with the free.
Take the socket reference while still holding conns lock, so the
registration reference can no longer be the last one, and drop it once
the handler is done.
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
Linux