Skip to main content
← All vulnerabilities
CVE-2026-74493

net/smc: fix socket use-after-free during link group termination

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.10.265, 5.15.216, 6.1.183, 6.6.151, 6.12.103, and 2 more
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: yes
  • Technical impact: total

Summary

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.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: yes · Technical impact: total

  3. Record last updated

Affected versions

  • Linux Linux

    From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in ff44f2df57fb5560bdc75eb977867643e764a262; From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in 9fb17c95b8f0683570fca1fb2792264147af937a; From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in bea8dc14de2d56aca749d368563e6888217710a5; From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in 5a42f162b857019a4c10ff687dc3bcdf51831865; From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in 281c103a8eaed59001ce952f231df1b07674215a; From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in f807a63d0d95680c34f677700da9148a07d7c78f; From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in f0541a775d04c88e90ba448e35ce0d743512822a; From 69318b5215f2dc32c345a3d65b98b4b1bf29c007 · fixed in f621d6ebeebb6374342571e4ddf45fdbc420f6cd

  • Linux Linux

    5.5

  • KernelLinux

    From 5.5.0 · fixed in 5.10.265; From 5.11.0 · fixed in 5.15.216; From 5.16.0 · fixed in 6.1.183; From 6.2.0 · fixed in 6.6.151; From 6.7.0 · fixed in 6.12.103; From 6.13.0 · fixed in 6.18.44; From 6.19.0 · fixed in 7.1.8

References 8

git.kernel.org