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