CVE-2026-68117

tipc: clear sock->sk on the failed-insert path in tipc_sk_create()

State
Published
Severity
9.8 Critical
Published
Aug 10, 2026
Updated
Oct 19, 2026
Reserved
Jul 30, 2026

Read the record on cve.org

Description

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

tipc: clear sock->sk on the failed-insert path in tipc_sk_create()

When tipc_sk_create() fails to insert the new socket (tipc_sk_insert() returns non-zero), its error path frees the sk with sk_free() but leaves sock->sk pointing at the freed object:

if (tipc_sk_insert(tsk)) { sk_free(sk); pr_warn("Socket create failed; port number exhausted\n"); return -EINVAL; }

This is harmless for plain socket(): the syscall layer clears sock->ops before releasing, so tipc_release() is never called. It is not harmless on the accept() path. tipc_accept() creates the pre-allocated child socket with tipc_sk_create(net, new_sock, 0, kern); on failure it leaves new_sock->sk dangling and new_sock->ops non-NULL, and do_accept() then fput()s the new file, so __sock_release() -> tipc_release() runs lock_sock(new_sock->sk) on the freed sk -- a use-after-free write of the sk_lock spinlock.

tipc_release() already guards this exact "failed accept() releases a pre-allocated child" case with "if (sk == NULL) return 0;", but the guard is bypassed because tipc_sk_create() left sock->sk non-NULL (dangling) rather than NULL.

Clear sock->sk on the failed-insert path so the existing tipc_release() NULL check fires and the use-after-free is avoided.

The tipc_sk_insert() failure is reached when the per-netns socket rhashtable hits its max_size (tsk_rht_params.max_size = 1048576, ~2M elements) -- i.e. once a netns holds ~2M TIPC sockets every insert returns -E2BIG.

BUG: KASAN: slab-use-after-free in lock_sock_nested (net/core/sock.c:3839) Write of size 8 at addr ffff8880047cdc38 by task init/1 lock_sock_nested (net/core/sock.c:3839) tipc_release (net/tipc/socket.c:638) __sock_release (net/socket.c:710) sock_close (net/socket.c:1501) __fput (fs/file_table.c:512) Allocated by task 1: sk_alloc (net/core/sock.c:2308) tipc_sk_create (net/tipc/socket.c:487) tipc_accept (net/tipc/socket.c:2744) do_accept (net/socket.c:2034) Freed by task 1: __sk_destruct (net/core/sock.c:2391) tipc_sk_create (net/tipc/socket.c:504) tipc_accept (net/tipc/socket.c:2744) do_accept (net/socket.c:2034)

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • efa78f2ae363428525fb4981bb63c555ee79f3c7 to before efebc23e9b29e3e5a9e2127dd066929f7f0d315eAffected
  • 833ecd0eae76eadf81d6d747bb5bc992d1151867 to before 8d6f26d48e61ef34f1921289401dbf36b10816afAffected
  • 00aff3590fc0a73bddd3b743863c14e76fd35c0c to before 82f59aa27f33bd014a7d8739371ab5712d15e33bAffected
  • 00aff3590fc0a73bddd3b743863c14e76fd35c0c to before b07d87b31631edb6529e6cdcca790a7489d1250dAffected
  • 00aff3590fc0a73bddd3b743863c14e76fd35c0c to before dd29891ed840f6b8d020b759d0dc4a00b1d6e4eaAffected
  • 00aff3590fc0a73bddd3b743863c14e76fd35c0c to before 5f5a41a48dbf9eda57b67ce23e548602cf7195a6Affected
  • 00aff3590fc0a73bddd3b743863c14e76fd35c0c to before f9596b1566616a8be0592dbceccb6344a7c6f6bbAffected
  • 00aff3590fc0a73bddd3b743863c14e76fd35c0c to before ba0533fc163f905fe817cfabdf8ed4058da44800Affected
  • 638fa20b618b2bbcf86da71231624cc82121a036Affected
  • 7bc9e7f70bc57d8f02ffea2a42094281effb15efAffected
  • ef488669b2652bde5b6ee5a409a5b048a2a50db4Affected
  • 4919d82f7041157a421ca9bf39a78551d5ad8a1bAffected
  • 3b2957fc09fe1ac7f07f40dd50dd5f93e3f3a7a2Affected
  • 5.10.132 to before 5.10.265Affected
  • 5.15.56 to before 5.15.216Affected
  • 4.9.324 to before 4.10Affected
  • 4.14.289 to before 4.15Affected
  • 4.19.253 to before 4.20Affected
  • 5.4.207 to before 5.5Affected
  • 5.18.13 to before 5.19Affected
LinuxLinux
  • 5.19Affected
  • before 5.19Not affected
  • 5.10.265 through 5.10.*Not affected
  • 5.15.216 through 5.15.*Not affected
  • 6.1.183 through 6.1.*Not affected
  • 6.6.148 through 6.6.*Not affected
  • 6.12.101 through 6.12.*Not affected
  • 6.18.42 through 6.18.*Not affected
  • 7.1.6 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.