]> www.infradead.org Git - users/willy/linux.git/commitdiff
tcp: lockless TCP_MAXSEG option
authorEric Dumazet <edumazet@google.com>
Thu, 21 Aug 2025 14:19:01 +0000 (14:19 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 22 Aug 2025 22:58:59 +0000 (15:58 -0700)
setsockopt(TCP_MAXSEG) writes over a field that does not need
socket lock protection anymore.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
Link: https://patch.msgid.link/20250821141901.18839-3-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp.c

index a12d81e01b3f2fb964227881c2f779741cc06e58..99232903b03c99d263cce59314fd369cfd33af6f 100644 (file)
@@ -3890,15 +3890,13 @@ int do_tcp_setsockopt(struct sock *sk, int level, int optname,
                WRITE_ONCE(inet_csk(sk)->icsk_delack_max, delack_max);
                return 0;
        }
+       case TCP_MAXSEG:
+               return tcp_sock_set_maxseg(sk, val);
        }
 
        sockopt_lock_sock(sk);
 
        switch (optname) {
-       case TCP_MAXSEG:
-               err = tcp_sock_set_maxseg(sk, val);
-               break;
-
        case TCP_NODELAY:
                __tcp_sock_set_nodelay(sk, val);
                break;