Message ID | 1357870727.27446.2988.camel@edumazet-glaptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Jan 10, 2013 at 9:18 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > From: Eric Dumazet <edumazet@google.com> > > On Thu, 2013-01-10 at 18:01 -0800, Eric Dumazet wrote: > >> Hmm, it might be commit c3ae62af8e755ea68380fb5ce682e60079a4c388 >> tcp: should drop incoming frames without ACK flag set >> >> It seems RST should be allowed to not have ACK set. >> >> I'll send a fix, thanks ! > > Yes, thats definitely the problem, sorry for that. > > > [PATCH] tcp: accept RST without ACK flag > > 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 <normalperson@yhbt.net> > Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Neal Cardwell <ncardwell@google.com> neal -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Eric Dumazet <eric.dumazet@gmail.com> wrote: > Yes, thats definitely the problem, sorry for that. > > > [PATCH] tcp: accept RST without ACK flag > > 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 <normalperson@yhbt.net> > Signed-off-by: Eric Dumazet <edumazet@google.com> All good here, thanks for the quick turnaround! Tested-by: Eric Wong <normalperson@yhbt.net> (I originally thought the FIFOs were part of the problem, so I left that in my test case) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Thu, 10 Jan 2013 18:18:47 -0800 > [PATCH] tcp: accept RST without ACK flag > > 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 <normalperson@yhbt.net> > Signed-off-by: Eric Dumazet <edumazet@google.com> Applied, thanks Eric. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 38e1184..0905997 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -5541,7 +5541,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; /* @@ -5986,7 +5986,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))