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

tcp: clear sock_ops cb flags before force-closing a child socket

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, 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: tcp: clear sock_ops cb flags before force-closing a child socket A child socket inherits the listener's bpf_sock_ops_cb_flags via sk_clone_lock(). If its setup fails in tcp_v4_syn_recv_sock() / tcp_v6_syn_recv_sock(), the child is freed through put_and_exit, where inet_csk_prepare_forced_close() drops the socket lock and tcp_done() runs without it. If BPF_SOCK_OPS_STATE_CB_FLAG was inherited, tcp_done() -> tcp_set_state() calls tcp_call_bpf(), which expects the lock and trips sock_owned_by_me(): WARNING: include/net/sock.h:1799 at tcp_set_state+0x433/0x550 RIP: 0010:tcp_set_state+0x433/0x550 include/net/sock.h:1799 Call Trace: <IRQ> tcp_done+0xba/0x250 net/ipv4/tcp.c:5095 tcp_v4_syn_recv_sock+0x850/0xa50 net/ipv4/tcp_ipv4.c:1787 tcp_check_req+0xf30/0x1360 net/ipv4/tcp_minisocks.c:926 tcp_v4_rcv+0x1047/0x1b50 net/ipv4/tcp_ipv4.c:2164 </IRQ> The child is freed before it is ever established, so it should run no sock_ops callback. Clear its cb flags in inet_csk_prepare_for_destroy_sock(), the common point for the IPv4, IPv6 and chtls forced-close paths and for the MPTCP ->syn_recv_sock() failure path (dispose_child), which reaches tcp_done() on a child that was never established too.

Timeline

  1. CVE published
  2. CISA SSVC assessment

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

  3. Record last updated

Affected versions

  • Linux Linux

    From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in 5d5389b2c37ca00da61d1407618ebe15abae0c8b; From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in 9f30ba9aa0270a18fdd1e6cd426c480c35f7de9d; From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in 71e9c53220abd7f5a45aa4d5e5b420d3479f3a4f; From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in 9fffa6465851a1910a6e9cb7272787dd615b26b1; From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in fe23d56e9266d58ba5c380f1970118eedeee0b68; From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in ce311bd2e36596f0aa2c92ca86fb3e019ac57eae; From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in 8874dafc9099bc49c2e5ebba030f85d276421f92; From d44874910a26f3a8f81edf873a2473363f07f660 · fixed in 990348e5bb457697c2f1f7f7b65154a3334d9d2b

  • Linux Linux

    4.16

  • KernelLinux

    From 4.16.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.40; From 6.19.0 · fixed in 7.1.5

References 8

git.kernel.org