CRITICAL Introduced in 5.8
smc ConnFlags Race
CVE-2026-80980
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
KernelScan AI8.1HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: net/smc: stop killed, freed and out_of_sync sharing a byte The three connection state flags are single-bit bitfields, so they occupy one byte of struct smc_connection and every store to one is a read-modify-write of the other two: u8 killed : 1; u8 freed : 1; u8 out_of_sync : 1; They are not written under a common lock. smc_cdc_msg_validate() sets out_of_sync from the receive tasklet, while smc_conn_kill() sets killed from process context under lock_sock(), and the receive path does not defer to the backlog when the socket is owned -- smc_cdc_msg_recv() takes only bh_lock_sock(). Give each flag its own byte so a store no longer touches its neighbours. All readers test them as booleans and are unchanged. struct smc_connection grows by two bytes.
02KernelScan AI Analysis
Risk summary
A remote attacker who can send SMC protocol messages to a target can trigger a race condition on connection state flags, potentially corrupting connection lifecycle management and leading to use-after-free or double-free conditions. Systems using SMC over exposed TCP connections are at highest risk. The impact ranges from denial of service to potential kernel memory corruption.
Vulnerability analysis
The SMC protocol tracks three connection lifecycle flags — killed, freed, and out-of-sync — as single-bit bitfields sharing one byte in the connection structure. Because writing any one flag is a read-modify-write of the entire byte, and these flags are updated from different execution contexts without a common lock (the receive path sets one flag from a tasklet while connection teardown sets another from process context), concurrent writes can silently clobber each other's values. The resulting flag corruption can cause a connection to be used after it has been freed or prevent proper termination, leading to use-after-free or double-free conditions. The fix gives each flag its own byte so that a store to one no longer touches the others, eliminating the inter-flag race. An attacker who can send SMC CDC messages to a target — by being the SMC peer or intercepting traffic between peers — can trigger the receive-path write; if it races with local connection teardown, the corrupted flags open a path to kernel memory corruption.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 5.8 | 6.12.112 | 09a9cbadc05f |
| 6.18 | 5.8 | 6.18.50 | 313f79149eb3 |
| 6.6 | 5.8 | 6.6.160 | 297e96f38d3e |
| 7.2 | 5.8 | 7.2.4 | 2cb7a8d64b7e |
| mainline | 5.8 | 7.3 | db51a8658c11 |
| cip/6.12 | 5.8 | 6.12.112-cip33 | 09a9cbadc05f |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.112-cip33 |
| cip/6.1 | Affected — no CIP fix yet (latest 6.1.189-cip61) |
| cip/6.1-rt | Affected — no CIP fix yet (latest 6.1.189-cip61-rt32) |
| cip/5.10 | Affected — no CIP fix yet (latest 5.10.271-cip78) |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |