]> Git Repo - linux.git/commitdiff
tcp: accept RST without ACK flag
authorEric Dumazet <[email protected]>
Thu, 10 Jan 2013 16:18:47 +0000 (16:18 +0000)
committerDavid S. Miller <[email protected]>
Fri, 11 Jan 2013 06:49:30 +0000 (22:49 -0800)
commit c3ae62af8e755 (tcp: should drop incoming frames without ACK flag
set) added a regression on the handling of RST messages.

RST should be allowed to come even without ACK bit set. We validate
the RST by checking the exact sequence, as requested by RFC 793 and
5961 3.2, in tcp_validate_incoming()

Reported-by: Eric Wong <[email protected]>
Signed-off-by: Eric Dumazet <[email protected]>
Acked-by: Neal Cardwell <[email protected]>
Tested-by: Eric Wong <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
net/ipv4/tcp_input.c

index a28e4db8a952b15cc2f06578f12acbe6353c162a..18f97ca76b00223b25d0f6faed8a829c45fb95c8 100644 (file)
@@ -5543,7 +5543,7 @@ slow_path:
        if (len < (th->doff << 2) || tcp_checksum_complete_user(sk, skb))
                goto csum_error;
 
-       if (!th->ack)
+       if (!th->ack && !th->rst)
                goto discard;
 
        /*
@@ -5988,7 +5988,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
                        goto discard;
        }
 
-       if (!th->ack)
+       if (!th->ack && !th->rst)
                goto discard;
 
        if (!tcp_validate_incoming(sk, skb, th, 0))
This page took 0.066582 seconds and 4 git commands to generate.