Loading include/net/inet_timewait_sock.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -110,7 +110,7 @@ void __inet_twsk_hashdance(struct inet_timewait_sock *tw, struct sock *sk, struct inet_hashinfo *hashinfo); struct inet_hashinfo *hashinfo); void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo); void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo); void inet_twsk_deschedule(struct inet_timewait_sock *tw); void inet_twsk_deschedule_put(struct inet_timewait_sock *tw); void inet_twsk_purge(struct inet_hashinfo *hashinfo, void inet_twsk_purge(struct inet_hashinfo *hashinfo, struct inet_timewait_death_row *twdr, int family); struct inet_timewait_death_row *twdr, int family); Loading net/ipv4/inet_hashtables.c +3 −6 Original line number Original line Diff line number Diff line Loading @@ -379,8 +379,7 @@ static int __inet_check_established(struct inet_timewait_death_row *death_row, *twp = tw; *twp = tw; } else if (tw) { } else if (tw) { /* Silly. Should hash-dance instead... */ /* Silly. Should hash-dance instead... */ inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); } } return 0; return 0; Loading Loading @@ -550,10 +549,8 @@ ok: inet_twsk_bind_unhash(tw, hinfo); inet_twsk_bind_unhash(tw, hinfo); spin_unlock(&head->lock); spin_unlock(&head->lock); if (tw) { if (tw) inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); } ret = 0; ret = 0; goto out; goto out; Loading net/ipv4/inet_timewait_sock.c +8 −5 Original line number Original line Diff line number Diff line Loading @@ -205,13 +205,17 @@ EXPORT_SYMBOL_GPL(inet_twsk_alloc); * tcp_input.c to verify this. * tcp_input.c to verify this. */ */ /* This is for handling early-kills of TIME_WAIT sockets. */ /* This is for handling early-kills of TIME_WAIT sockets. void inet_twsk_deschedule(struct inet_timewait_sock *tw) * Warning : consume reference. * Caller should not access tw anymore. */ void inet_twsk_deschedule_put(struct inet_timewait_sock *tw) { { if (del_timer_sync(&tw->tw_timer)) if (del_timer_sync(&tw->tw_timer)) inet_twsk_kill(tw); inet_twsk_kill(tw); inet_twsk_put(tw); } } EXPORT_SYMBOL(inet_twsk_deschedule); EXPORT_SYMBOL(inet_twsk_deschedule_put); void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo) void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo) { { Loading Loading @@ -281,9 +285,8 @@ restart: rcu_read_unlock(); rcu_read_unlock(); local_bh_disable(); local_bh_disable(); inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); local_bh_enable(); local_bh_enable(); inet_twsk_put(tw); goto restart_rcu; goto restart_rcu; } } /* If the nulls value we got at the end of this lookup is /* If the nulls value we got at the end of this lookup is Loading net/ipv4/tcp_ipv4.c +1 −2 Original line number Original line Diff line number Diff line Loading @@ -1730,8 +1730,7 @@ do_time_wait: iph->daddr, th->dest, iph->daddr, th->dest, inet_iif(skb)); inet_iif(skb)); if (sk2) { if (sk2) { inet_twsk_deschedule(inet_twsk(sk)); inet_twsk_deschedule_put(inet_twsk(sk)); inet_twsk_put(inet_twsk(sk)); sk = sk2; sk = sk2; goto process; goto process; } } Loading net/ipv4/tcp_minisocks.c +2 −4 Original line number Original line Diff line number Diff line Loading @@ -127,8 +127,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, if (!th->fin || if (!th->fin || TCP_SKB_CB(skb)->end_seq != tcptw->tw_rcv_nxt + 1) { TCP_SKB_CB(skb)->end_seq != tcptw->tw_rcv_nxt + 1) { kill_with_rst: kill_with_rst: inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); return TCP_TW_RST; return TCP_TW_RST; } } Loading Loading @@ -178,8 +177,7 @@ kill_with_rst: */ */ if (sysctl_tcp_rfc1337 == 0) { if (sysctl_tcp_rfc1337 == 0) { kill: kill: inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); return TCP_TW_SUCCESS; return TCP_TW_SUCCESS; } } } } Loading Loading
include/net/inet_timewait_sock.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -110,7 +110,7 @@ void __inet_twsk_hashdance(struct inet_timewait_sock *tw, struct sock *sk, struct inet_hashinfo *hashinfo); struct inet_hashinfo *hashinfo); void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo); void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo); void inet_twsk_deschedule(struct inet_timewait_sock *tw); void inet_twsk_deschedule_put(struct inet_timewait_sock *tw); void inet_twsk_purge(struct inet_hashinfo *hashinfo, void inet_twsk_purge(struct inet_hashinfo *hashinfo, struct inet_timewait_death_row *twdr, int family); struct inet_timewait_death_row *twdr, int family); Loading
net/ipv4/inet_hashtables.c +3 −6 Original line number Original line Diff line number Diff line Loading @@ -379,8 +379,7 @@ static int __inet_check_established(struct inet_timewait_death_row *death_row, *twp = tw; *twp = tw; } else if (tw) { } else if (tw) { /* Silly. Should hash-dance instead... */ /* Silly. Should hash-dance instead... */ inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); } } return 0; return 0; Loading Loading @@ -550,10 +549,8 @@ ok: inet_twsk_bind_unhash(tw, hinfo); inet_twsk_bind_unhash(tw, hinfo); spin_unlock(&head->lock); spin_unlock(&head->lock); if (tw) { if (tw) inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); } ret = 0; ret = 0; goto out; goto out; Loading
net/ipv4/inet_timewait_sock.c +8 −5 Original line number Original line Diff line number Diff line Loading @@ -205,13 +205,17 @@ EXPORT_SYMBOL_GPL(inet_twsk_alloc); * tcp_input.c to verify this. * tcp_input.c to verify this. */ */ /* This is for handling early-kills of TIME_WAIT sockets. */ /* This is for handling early-kills of TIME_WAIT sockets. void inet_twsk_deschedule(struct inet_timewait_sock *tw) * Warning : consume reference. * Caller should not access tw anymore. */ void inet_twsk_deschedule_put(struct inet_timewait_sock *tw) { { if (del_timer_sync(&tw->tw_timer)) if (del_timer_sync(&tw->tw_timer)) inet_twsk_kill(tw); inet_twsk_kill(tw); inet_twsk_put(tw); } } EXPORT_SYMBOL(inet_twsk_deschedule); EXPORT_SYMBOL(inet_twsk_deschedule_put); void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo) void inet_twsk_schedule(struct inet_timewait_sock *tw, const int timeo) { { Loading Loading @@ -281,9 +285,8 @@ restart: rcu_read_unlock(); rcu_read_unlock(); local_bh_disable(); local_bh_disable(); inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); local_bh_enable(); local_bh_enable(); inet_twsk_put(tw); goto restart_rcu; goto restart_rcu; } } /* If the nulls value we got at the end of this lookup is /* If the nulls value we got at the end of this lookup is Loading
net/ipv4/tcp_ipv4.c +1 −2 Original line number Original line Diff line number Diff line Loading @@ -1730,8 +1730,7 @@ do_time_wait: iph->daddr, th->dest, iph->daddr, th->dest, inet_iif(skb)); inet_iif(skb)); if (sk2) { if (sk2) { inet_twsk_deschedule(inet_twsk(sk)); inet_twsk_deschedule_put(inet_twsk(sk)); inet_twsk_put(inet_twsk(sk)); sk = sk2; sk = sk2; goto process; goto process; } } Loading
net/ipv4/tcp_minisocks.c +2 −4 Original line number Original line Diff line number Diff line Loading @@ -127,8 +127,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb, if (!th->fin || if (!th->fin || TCP_SKB_CB(skb)->end_seq != tcptw->tw_rcv_nxt + 1) { TCP_SKB_CB(skb)->end_seq != tcptw->tw_rcv_nxt + 1) { kill_with_rst: kill_with_rst: inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); return TCP_TW_RST; return TCP_TW_RST; } } Loading Loading @@ -178,8 +177,7 @@ kill_with_rst: */ */ if (sysctl_tcp_rfc1337 == 0) { if (sysctl_tcp_rfc1337 == 0) { kill: kill: inet_twsk_deschedule(tw); inet_twsk_deschedule_put(tw); inet_twsk_put(tw); return TCP_TW_SUCCESS; return TCP_TW_SUCCESS; } } } } Loading