KernelScan.io

CRITICAL Introduced in 5.8

smc ConnFlags Race

CVE-2026-80980

CVSS 9.8 / 10.0 NVD

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

KernelScan AI8.1HIGH

01

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.

02

Engine v0.6.0

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.

Affectednet/smc/smc.h (SMC - Shared Memory Communications)

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.

03

BranchIntroducedFixed inPatch commit
6.125.86.12.11209a9cbadc05f
6.185.86.18.50313f79149eb3
6.65.86.6.160297e96f38d3e
7.25.87.2.42cb7a8d64b7e
mainline5.87.3db51a8658c11
cip/6.125.86.12.112-cip3309a9cbadc05f

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.112-cip33
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)