diff options
Diffstat (limited to 'net/ipv4/tcp_timer.c')
| -rw-r--r-- | net/ipv4/tcp_timer.c | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index 58796c6c9a16..cab2678b1958 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c @@ -68,18 +68,13 @@ void tcp_clear_xmit_timers(struct sock *sk) struct tcp_opt *tp = tcp_sk(sk); tp->pending = 0; - if (timer_pending(&tp->retransmit_timer) && - del_timer(&tp->retransmit_timer)) - __sock_put(sk); + sk_stop_timer(sk, &tp->retransmit_timer); tp->ack.pending = 0; tp->ack.blocked = 0; - if (timer_pending(&tp->delack_timer) && - del_timer(&tp->delack_timer)) - __sock_put(sk); + sk_stop_timer(sk, &tp->delack_timer); - if (timer_pending(&sk->sk_timer) && del_timer(&sk->sk_timer)) - __sock_put(sk); + sk_stop_timer(sk, &sk->sk_timer); } static void tcp_write_err(struct sock *sk) @@ -218,8 +213,7 @@ static void tcp_delack_timer(unsigned long data) /* Try again later. */ tp->ack.blocked = 1; NET_INC_STATS_BH(DelayedACKLocked); - if (!mod_timer(&tp->delack_timer, jiffies + TCP_DELACK_MIN)) - sock_hold(sk); + sk_reset_timer(sk, &tp->delack_timer, jiffies + TCP_DELACK_MIN); goto out_unlock; } @@ -229,8 +223,7 @@ static void tcp_delack_timer(unsigned long data) goto out; if (time_after(tp->ack.timeout, jiffies)) { - if (!mod_timer(&tp->delack_timer, tp->ack.timeout)) - sock_hold(sk); + sk_reset_timer(sk, &tp->delack_timer, tp->ack.timeout); goto out; } tp->ack.pending &= ~TCP_ACK_TIMER; @@ -429,8 +422,7 @@ static void tcp_write_timer(unsigned long data) bh_lock_sock(sk); if (sock_owned_by_user(sk)) { /* Try again later */ - if (!mod_timer(&tp->retransmit_timer, jiffies + (HZ/20))) - sock_hold(sk); + sk_reset_timer(sk, &tp->retransmit_timer, jiffies + (HZ / 20)); goto out_unlock; } @@ -438,8 +430,7 @@ static void tcp_write_timer(unsigned long data) goto out; if (time_after(tp->timeout, jiffies)) { - if (!mod_timer(&tp->retransmit_timer, tp->timeout)) - sock_hold(sk); + sk_reset_timer(sk, &tp->retransmit_timer, tp->timeout); goto out; } @@ -557,14 +548,12 @@ static void tcp_synack_timer(struct sock *sk) void tcp_delete_keepalive_timer (struct sock *sk) { - if (timer_pending(&sk->sk_timer) && del_timer (&sk->sk_timer)) - __sock_put(sk); + sk_stop_timer(sk, &sk->sk_timer); } void tcp_reset_keepalive_timer (struct sock *sk, unsigned long len) { - if (!mod_timer(&sk->sk_timer, jiffies + len)) - sock_hold(sk); + sk_reset_timer(sk, &sk->sk_timer, jiffies + len); } void tcp_set_keepalive(struct sock *sk, int val) |
