Thread (10 messages) 10 messages, 6 authors, 2011-09-20

Re: [BUG?] tcp: potential bug in tcp_is_sackblock_valid()

flat view

From: Yan, Zheng <hidden>
Date: 2011-09-09 02:11:00

On 09/09/2011 09:54 AM, Herbert Xu wrote:
On Fri, Sep 09, 2011 at 09:45:52AM +0800, Yan, Zheng wrote:
quoted
Hi all,

I found a check in tcp_is_sackblock_valid() is suspicious. It against
its comment and RFC. I think the correct check should be:

---
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 385c470..a5d01b1 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -1124,7 +1124,7 @@ static int tcp_is_sackblock_valid(struct tcp_sock *tp, int is_dsack,
                return 0;
 
        /* ...Then it's D-SACK, and must reside below snd_una completely */
-       if (!after(end_seq, tp->snd_una))
+       if (after(end_seq, tp->snd_una))
                return 0;
 
        if (!before(start_seq, tp->undo_marker))
---
I also checked /proc/net/netstat of my laptop, found TCPDSACKIgnoredOld
field is not zero. Maybe it's caused by the bug.
Yes this looks like a typo.  Please resend your patch with a
description and signed-off-by line.
I think the bug has a big influence on tcp DSACKs. It's better to
leave it to people who fully understand tcp code.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help