]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tcp: Remove timewait_sock_ops.twsk_destructor().
authorKuniyuki Iwashima <kuniyu@google.com>
Fri, 22 Aug 2025 19:06:57 +0000 (19:06 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 26 Aug 2025 00:53:35 +0000 (17:53 -0700)
Since DCCP has been removed, sk->sk_prot->twsk_prot->twsk_destructor
is always tcp_twsk_destructor().

Let's call tcp_twsk_destructor() directly in inet_twsk_free() and
remove ->twsk_destructor().

While at it, tcp_twsk_destructor() is un-exported.

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20250822190803.540788-3-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/timewait_sock.h
net/ipv4/inet_timewait_sock.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_minisocks.c
net/ipv6/tcp_ipv6.c

index 62b3e9f2aed404ba818f4b57d7f2d3acb8ef73f2..0a85ac64a66d6f926b13305c307ceb7475bb493e 100644 (file)
@@ -15,13 +15,6 @@ struct timewait_sock_ops {
        struct kmem_cache       *twsk_slab;
        char            *twsk_slab_name;
        unsigned int    twsk_obj_size;
-       void            (*twsk_destructor)(struct sock *sk);
 };
 
-static inline void twsk_destructor(struct sock *sk)
-{
-       if (sk->sk_prot->twsk_prot->twsk_destructor != NULL)
-               sk->sk_prot->twsk_prot->twsk_destructor(sk);
-}
-
 #endif /* _TIMEWAIT_SOCK_H */
index 875ff923a8ed05411628f55f788f33cbe3dee5b3..5b5426b8ee92c052399133fffd04d048d2514245 100644 (file)
@@ -15,7 +15,7 @@
 #include <net/inet_hashtables.h>
 #include <net/inet_timewait_sock.h>
 #include <net/ip.h>
-
+#include <net/tcp.h>
 
 /**
  *     inet_twsk_bind_unhash - unhash a timewait socket from bind hash
@@ -74,7 +74,8 @@ static void inet_twsk_kill(struct inet_timewait_sock *tw)
 void inet_twsk_free(struct inet_timewait_sock *tw)
 {
        struct module *owner = tw->tw_prot->owner;
-       twsk_destructor((struct sock *)tw);
+
+       tcp_twsk_destructor((struct sock *)tw);
        kmem_cache_free(tw->tw_prot->twsk_prot->twsk_slab, tw);
        module_put(owner);
 }
index 9543f153835908286384defa787e2a707fb8dbda..a48b98f67b6a203f2c74ba7f5dcd626e5f2afe24 100644 (file)
@@ -2459,7 +2459,6 @@ do_time_wait:
 
 static struct timewait_sock_ops tcp_timewait_sock_ops = {
        .twsk_obj_size  = sizeof(struct tcp_timewait_sock),
-       .twsk_destructor= tcp_twsk_destructor,
 };
 
 void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
index 2994c9222c9cb5ee86b60bdb553f92130e52c70e..d1c9e40886463ca308f9f3682c4039f491e7555f 100644 (file)
@@ -401,7 +401,6 @@ void tcp_twsk_destructor(struct sock *sk)
 #endif
        tcp_ao_destroy_sock(sk, true);
 }
-EXPORT_IPV6_MOD_GPL(tcp_twsk_destructor);
 
 void tcp_twsk_purge(struct list_head *net_exit_list)
 {
index 5620d9e50e195894fb0289d5bb8963579e14429e..d99717376bffadc92729d5dcb85724c6257ae9bd 100644 (file)
@@ -2050,7 +2050,6 @@ void tcp_v6_early_demux(struct sk_buff *skb)
 
 static struct timewait_sock_ops tcp6_timewait_sock_ops = {
        .twsk_obj_size  = sizeof(struct tcp6_timewait_sock),
-       .twsk_destructor = tcp_twsk_destructor,
 };
 
 INDIRECT_CALLABLE_SCOPE void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb)