KernelScan.io

HIGH

smc RxTasklet UAF

CVE-2026-80979

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: net/smc: unregister the connection before draining the rx tasklet smc_conn_free() calls smc_ism_unset_conn() only while the link group is still on its device list, and never sets conn->killed. smc_lgr_terminate_sched() unlinks the group immediately and defers killing its connections to a work item, so a connection freed in that window keeps its smcd->conn[] slot with both gates in smcd_handle_irq() open, and the device can re-arm the receive tasklet after tasklet_kill() has returned. On the DMB-nocopy path the ghost send buffer is freed right after that drain, so the re-armed tasklet dereferences it. Unregister unconditionally and drain before the detach at both teardown sites, mirroring rmb_desc, which smc_buf_unuse() releases after the drain. Clear conn->sndbuf_desc before freeing it as well, so a reader that samples the pointer cannot get one that is already freed.

02

Engine v0.6.0

Risk summary

A race condition in the SMC-D connection teardown path allows a receive tasklet to be re-armed after it has been drained, causing a use-after-free on the send buffer. Any peer on the same ISM fabric (typically another LPAR on the same IBM Z machine) or a local process with network access can trigger this without special privileges. The result is kernel memory corruption leading to a crash or potential code execution.

Affectednet/smc/smc_core.c (smc)

Vulnerability analysis

A race condition in the SMC-D connection teardown path allows a receive tasklet to be re-armed by an incoming device interrupt after it has already been drained, leading to a use-after-free when the tasklet dereferences a send buffer that was freed immediately after the drain. The window opens when a link group is unlinked from its device list but connection killing is deferred to a work item — during this gap the connection's device slot stays registered, so the interrupt handler can re-arm the tasklet. The fix unregisters the connection unconditionally before draining the tasklet, ensures the tasklet is fully stopped before freeing any buffers at both teardown sites, and clears the send buffer pointer before freeing it so concurrent readers cannot sample a stale pointer. The vulnerability is reachable by any peer on the same ISM fabric (typically another LPAR on the same IBM Z machine) who can establish an SMC-D connection, or by a local unprivileged process with network access; no special privileges are required on the target system.

03

BranchIntroducedFixed inPatch commit
6.12—6.12.109b4d540ac95cd
6.18—6.18.505bd8b764a610
6.66.6.666.6.157b6b6ac713ee8
7.2—7.2.4b74d313567df
mainline—7.336cdf5d48ca1
cip/6.12—6.12.111-cip32b4d540ac95cd

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32