mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
tcp: Remove timewait_sock_ops.twsk_destructor().
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
9db0163e3c
commit
2d842b6c67
@@ -15,13 +15,6 @@ struct timewait_sock_ops {
|
|||||||
struct kmem_cache *twsk_slab;
|
struct kmem_cache *twsk_slab;
|
||||||
char *twsk_slab_name;
|
char *twsk_slab_name;
|
||||||
unsigned int twsk_obj_size;
|
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 */
|
#endif /* _TIMEWAIT_SOCK_H */
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
#include <net/inet_hashtables.h>
|
#include <net/inet_hashtables.h>
|
||||||
#include <net/inet_timewait_sock.h>
|
#include <net/inet_timewait_sock.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <net/tcp.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* inet_twsk_bind_unhash - unhash a timewait socket from bind hash
|
* 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)
|
void inet_twsk_free(struct inet_timewait_sock *tw)
|
||||||
{
|
{
|
||||||
struct module *owner = tw->tw_prot->owner;
|
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);
|
kmem_cache_free(tw->tw_prot->twsk_prot->twsk_slab, tw);
|
||||||
module_put(owner);
|
module_put(owner);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2459,7 +2459,6 @@ do_time_wait:
|
|||||||
|
|
||||||
static struct timewait_sock_ops tcp_timewait_sock_ops = {
|
static struct timewait_sock_ops tcp_timewait_sock_ops = {
|
||||||
.twsk_obj_size = sizeof(struct tcp_timewait_sock),
|
.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)
|
void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
|
||||||
|
|||||||
@@ -401,7 +401,6 @@ void tcp_twsk_destructor(struct sock *sk)
|
|||||||
#endif
|
#endif
|
||||||
tcp_ao_destroy_sock(sk, true);
|
tcp_ao_destroy_sock(sk, true);
|
||||||
}
|
}
|
||||||
EXPORT_IPV6_MOD_GPL(tcp_twsk_destructor);
|
|
||||||
|
|
||||||
void tcp_twsk_purge(struct list_head *net_exit_list)
|
void tcp_twsk_purge(struct list_head *net_exit_list)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2050,7 +2050,6 @@ void tcp_v6_early_demux(struct sk_buff *skb)
|
|||||||
|
|
||||||
static struct timewait_sock_ops tcp6_timewait_sock_ops = {
|
static struct timewait_sock_ops tcp6_timewait_sock_ops = {
|
||||||
.twsk_obj_size = sizeof(struct tcp6_timewait_sock),
|
.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)
|
INDIRECT_CALLABLE_SCOPE void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb)
|
||||||
|
|||||||
Reference in New Issue
Block a user