CVE-2026-74631: net: smc: fix splice entry lifetime imbalance in smc_rx_splice

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026082221-CVE-2026-74631-4134@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

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

net: smc: fix splice entry lifetime imbalance in smc_rx_splice

smc_rx_splice() passes pages to splice_to_pipe() before taking the
references that cover the lifetime of each splice entry. In the
VM-backed RMB path, splice_to_pipe() may drop unqueued entries through
smc_rx_spd_release(), while queued entries are released later via the
pipe buffer callback.

The old post-splice accounting also derives the number of queued VM pages
from an offset mutated while building the descriptor, and a multi-page
splice pairs one sock_hold() with multiple sock_put() calls.

Take the page and socket references for every candidate entry before
splice_to_pipe(), and drop the matching private state, page reference,
and socket reference from smc_rx_spd_release() for entries that never
get queued. This fixes a refcount imbalance that can underflow page
refcounts and trigger a use-after-free.

The Linux kernel CVE team has assigned CVE-2026-74631 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 4.18 with commit 9014db202cb764b8e14c53e7bacc81f9a1a2ba7f and fixed in 6.1.183 with commit c841789e456ec6751342fa800639ce8e82ff0e6b
	Issue introduced in 4.18 with commit 9014db202cb764b8e14c53e7bacc81f9a1a2ba7f and fixed in 6.6.152 with commit af02c67ce654356c58db20a0bb2db33ace3b07a8
	Issue introduced in 4.18 with commit 9014db202cb764b8e14c53e7bacc81f9a1a2ba7f and fixed in 6.12.104 with commit ca8342b5fc24c249fdb998468f6a168b457c67e5
	Issue introduced in 4.18 with commit 9014db202cb764b8e14c53e7bacc81f9a1a2ba7f and fixed in 6.18.45 with commit 0b7d54cedea5cb158e21925ae0c6c2f5c87ed2a0
	Issue introduced in 4.18 with commit 9014db202cb764b8e14c53e7bacc81f9a1a2ba7f and fixed in 7.1.9 with commit 4515c78f4d9fd577270f012efeb062ea58b3682d
	Issue introduced in 4.18 with commit 9014db202cb764b8e14c53e7bacc81f9a1a2ba7f and fixed in 7.2 with commit 5d9686af2976741bbd79b150d1c9e60b81e7f12e

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-74631
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	net/smc/smc_rx.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/c841789e456ec6751342fa800639ce8e82ff0e6b
	https://git.kernel.org/stable/c/af02c67ce654356c58db20a0bb2db33ace3b07a8
	https://git.kernel.org/stable/c/ca8342b5fc24c249fdb998468f6a168b457c67e5
	https://git.kernel.org/stable/c/0b7d54cedea5cb158e21925ae0c6c2f5c87ed2a0
	https://git.kernel.org/stable/c/4515c78f4d9fd577270f012efeb062ea58b3682d
	https://git.kernel.org/stable/c/5d9686af2976741bbd79b150d1c9e60b81e7f12e
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.