|
@@ -267,12 +267,9 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
|
|
|
const struct inet_connection_sock *icsk = inet_csk(sk);
|
|
|
const struct tcp_sock *tp = tcp_sk(sk);
|
|
|
bool recycle_ok = false;
|
|
|
- bool recycle_on = false;
|
|
|
|
|
|
- if (tcp_death_row.sysctl_tw_recycle && tp->rx_opt.ts_recent_stamp) {
|
|
|
+ if (tcp_death_row.sysctl_tw_recycle && tp->rx_opt.ts_recent_stamp)
|
|
|
recycle_ok = tcp_remember_stamp(sk);
|
|
|
- recycle_on = true;
|
|
|
- }
|
|
|
|
|
|
if (tcp_death_row.tw_count < tcp_death_row.sysctl_max_tw_buckets)
|
|
|
tw = inet_twsk_alloc(sk, state);
|
|
@@ -281,7 +278,6 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
|
|
|
struct tcp_timewait_sock *tcptw = tcp_twsk((struct sock *)tw);
|
|
|
const int rto = (icsk->icsk_rto << 2) - (icsk->icsk_rto >> 1);
|
|
|
struct inet_sock *inet = inet_sk(sk);
|
|
|
- struct inet_peer *peer = NULL;
|
|
|
|
|
|
tw->tw_transparent = inet->transparent;
|
|
|
tw->tw_rcv_wscale = tp->rx_opt.rcv_wscale;
|
|
@@ -305,12 +301,6 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
- if (recycle_on)
|
|
|
- peer = icsk->icsk_af_ops->get_peer(sk);
|
|
|
- tcptw->tw_peer = peer;
|
|
|
- if (peer)
|
|
|
- atomic_inc(&peer->refcnt);
|
|
|
-
|
|
|
#ifdef CONFIG_TCP_MD5SIG
|
|
|
/*
|
|
|
* The timewait bucket does not have the key DB from the
|
|
@@ -362,11 +352,9 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
|
|
|
|
|
|
void tcp_twsk_destructor(struct sock *sk)
|
|
|
{
|
|
|
+#ifdef CONFIG_TCP_MD5SIG
|
|
|
struct tcp_timewait_sock *twsk = tcp_twsk(sk);
|
|
|
|
|
|
- if (twsk->tw_peer)
|
|
|
- inet_putpeer(twsk->tw_peer);
|
|
|
-#ifdef CONFIG_TCP_MD5SIG
|
|
|
if (twsk->tw_md5_key) {
|
|
|
tcp_free_md5sig_pool();
|
|
|
kfree_rcu(twsk->tw_md5_key, rcu);
|