Commit c48b22da authored by Joe Perches's avatar Joe Perches Committed by David S. Miller

tcp: Remove 2 indentation levels in tcp_rcv_state_process

case TCP_FIN_WAIT1 can also be simplified by reversing tests
and adding breaks;

Add braces after case and move automatic definitions.
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 61eb9003
...@@ -5670,7 +5670,10 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, ...@@ -5670,7 +5670,10 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
tcp_fast_path_on(tp); tcp_fast_path_on(tp);
break; break;
case TCP_FIN_WAIT1: case TCP_FIN_WAIT1: {
struct dst_entry *dst;
int tmo;
/* If we enter the TCP_FIN_WAIT1 state and we are a /* If we enter the TCP_FIN_WAIT1 state and we are a
* Fast Open socket and this is the first acceptable * Fast Open socket and this is the first acceptable
* ACK we have received, this would have acknowledged * ACK we have received, this would have acknowledged
...@@ -5689,48 +5692,47 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, ...@@ -5689,48 +5692,47 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
reqsk_fastopen_remove(sk, req, false); reqsk_fastopen_remove(sk, req, false);
tcp_rearm_rto(sk); tcp_rearm_rto(sk);
} }
if (tp->snd_una == tp->write_seq) { if (tp->snd_una != tp->write_seq)
struct dst_entry *dst; break;
tcp_set_state(sk, TCP_FIN_WAIT2); tcp_set_state(sk, TCP_FIN_WAIT2);
sk->sk_shutdown |= SEND_SHUTDOWN; sk->sk_shutdown |= SEND_SHUTDOWN;
dst = __sk_dst_get(sk); dst = __sk_dst_get(sk);
if (dst) if (dst)
dst_confirm(dst); dst_confirm(dst);
if (!sock_flag(sk, SOCK_DEAD)) { if (!sock_flag(sk, SOCK_DEAD)) {
/* Wake up lingering close() */ /* Wake up lingering close() */
sk->sk_state_change(sk); sk->sk_state_change(sk);
} else { break;
int tmo; }
if (tp->linger2 < 0 ||
(TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt))) {
tcp_done(sk);
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
return 1;
}
tmo = tcp_fin_time(sk); if (tp->linger2 < 0 ||
if (tmo > TCP_TIMEWAIT_LEN) { (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt))) {
} else if (th->fin || sock_owned_by_user(sk)) { tcp_done(sk);
/* Bad case. We could lose such FIN otherwise. NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
* It is not a big problem, but it looks confusing return 1;
* and not so rare event. We still can lose it now, }
* if it spins in bh_lock_sock(), but it is really
* marginal case. tmo = tcp_fin_time(sk);
*/ if (tmo > TCP_TIMEWAIT_LEN) {
inet_csk_reset_keepalive_timer(sk, tmo); inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN);
} else { } else if (th->fin || sock_owned_by_user(sk)) {
tcp_time_wait(sk, TCP_FIN_WAIT2, tmo); /* Bad case. We could lose such FIN otherwise.
goto discard; * It is not a big problem, but it looks confusing
} * and not so rare event. We still can lose it now,
} * if it spins in bh_lock_sock(), but it is really
* marginal case.
*/
inet_csk_reset_keepalive_timer(sk, tmo);
} else {
tcp_time_wait(sk, TCP_FIN_WAIT2, tmo);
goto discard;
} }
break; break;
}
case TCP_CLOSING: case TCP_CLOSING:
if (tp->snd_una == tp->write_seq) { if (tp->snd_una == tp->write_seq) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment