CVE-2026-74493: net/smc: fix socket use-after-free during link group termination
Greg Kroah-Hartman <[email protected]>
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026081539-CVE-2026-74493-cf51@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== In the Linux kernel, the following vulnerability has been resolved: net/smc: fix socket use-after-free during link group termination __smc_lgr_terminate() drops conns_lock after finding a connection in lgr->conns_all, but before taking a reference on its socket. The connection is embedded in the socket, and its registration reference protects it only while the connection remains in the tree. A concurrent close can unregister the connection and drop that reference, freeing the socket before the termination worker reaches sock_hold(). The race is reachable when close overlaps link group termination. Local stress testing reproduced the use-after-free and KASAN reported: BUG: KASAN: slab-use-after-free in __smc_lgr_terminate.part.0 [smc] Write of size 4 by task kworker/3:3 Workqueue: events smc_lgr_terminate_work [smc] __smc_lgr_terminate.part.0 [smc] The socket was allocated by smc_create(), freed through slab_free_after_rcu_debug(), and was followed by: refcount_t: addition on 0; use-after-free. __smc_lgr_terminate.part.0 [smc] Take the socket reference while conns_lock still protects the tree entry. The unregister path then cannot drop the last reference until termination has finished using the socket. The Linux kernel CVE team has assigned CVE-2026-74493 to this issue. Affected and fixed versions =========================== Issue introduced in 5.5 with commit 69318b5215f2dc32c345a3d65b98b4b1bf29c007 and fixed in 6.6.151 with commit 5a42f162b857019a4c10ff687dc3bcdf51831865 Issue introduced in 5.5 with commit 69318b5215f2dc32c345a3d65b98b4b1bf29c007 and fixed in 6.12.103 with commit 281c103a8eaed59001ce952f231df1b07674215a Issue introduced in 5.5 with commit 69318b5215f2dc32c345a3d65b98b4b1bf29c007 and fixed in 6.18.44 with commit f807a63d0d95680c34f677700da9148a07d7c78f Issue introduced in 5.5 with commit 69318b5215f2dc32c345a3d65b98b4b1bf29c007 and fixed in 7.1.8 with commit f0541a775d04c88e90ba448e35ce0d743512822a Issue introduced in 5.5 with commit 69318b5215f2dc32c345a3d65b98b4b1bf29c007 and fixed in 7.2-rc6 with commit f621d6ebeebb6374342571e4ddf45fdbc420f6cd 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-74493 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_core.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/5a42f162b857019a4c10ff687dc3bcdf51831865 https://git.kernel.org/stable/c/281c103a8eaed59001ce952f231df1b07674215a https://git.kernel.org/stable/c/f807a63d0d95680c34f677700da9148a07d7c78f https://git.kernel.org/stable/c/f0541a775d04c88e90ba448e35ce0d743512822a https://git.kernel.org/stable/c/f621d6ebeebb6374342571e4ddf45fdbc420f6cd