]> www.infradead.org Git - users/hch/misc.git/commitdiff
tcp: reclaim 8 bytes in struct request_sock_queue
authorEric Dumazet <edumazet@google.com>
Fri, 19 Sep 2025 20:48:56 +0000 (20:48 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 23 Sep 2025 00:55:25 +0000 (17:55 -0700)
synflood_warned had to be u32 for xchg(), but ensuring
atomicity is not really needed.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20250919204856.2977245-9-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/request_sock.h
net/ipv4/tcp_input.c

index 6a5ec1418e8552b4aa9d25d61afa5376187b569d..cd4d4cf71d0d22bdb980f6e1cbe10e8307965b0e 100644 (file)
@@ -185,8 +185,8 @@ struct fastopen_queue {
 struct request_sock_queue {
        spinlock_t              rskq_lock;
        u8                      rskq_defer_accept;
+       u8                      synflood_warned;
 
-       u32                     synflood_warned;
        atomic_t                qlen;
        atomic_t                young;
 
index f93d48d98d5dacf2ee868cd6b2d65a396443d106..79d5252ed6cc1a24ec898f4168d47c39c6e92fe1 100644 (file)
@@ -7282,8 +7282,8 @@ static bool tcp_syn_flood_action(struct sock *sk, const char *proto)
 #endif
                __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPREQQFULLDROP);
 
-       if (!READ_ONCE(queue->synflood_warned) && syncookies != 2 &&
-           xchg(&queue->synflood_warned, 1) == 0) {
+       if (syncookies != 2 && !READ_ONCE(queue->synflood_warned)) {
+               WRITE_ONCE(queue->synflood_warned, 1);
                if (IS_ENABLED(CONFIG_IPV6) && sk->sk_family == AF_INET6) {
                        net_info_ratelimited("%s: Possible SYN flooding on port [%pI6c]:%u. %s.\n",
                                        proto, inet6_rcv_saddr(sk),