diff options
author | Eric Dumazet <edumazet@google.com> | 2012-05-23 17:51:37 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-24 00:28:21 -0400 |
commit | 1ca7ee30630e1022dbcf1b51be20580815ffab73 (patch) | |
tree | 5aab9c5bd4e31617afce262672c833db26381a23 /fs/inode.c | |
parent | e49cc0da7283088c5e03d475ffe2fdcb24a6d5b1 (diff) | |
download | blackbird-op-linux-1ca7ee30630e1022dbcf1b51be20580815ffab73.tar.gz blackbird-op-linux-1ca7ee30630e1022dbcf1b51be20580815ffab73.zip |
tcp: take care of overlaps in tcp_try_coalesce()
Sergio Correia reported following warning :
WARNING: at net/ipv4/tcp.c:1301 tcp_cleanup_rbuf+0x4f/0x110()
WARN(skb && !before(tp->copied_seq, TCP_SKB_CB(skb)->end_seq),
"cleanup rbuf bug: copied %X seq %X rcvnxt %X\n",
tp->copied_seq, TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt);
It appears TCP coalescing, and more specifically commit b081f85c297
(net: implement tcp coalescing in tcp_queue_rcv()) should take care of
possible segment overlaps in receive queue. This was properly done in
the case of out_or_order_queue by the caller.
For example, segment at tail of queue have sequence 1000-2000, and we
add a segment with sequence 1500-2500.
This can happen in case of retransmits.
In this case, just don't do the coalescing.
Reported-by: Sergio Correia <lists@uece.net>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Tested-by: Sergio Correia <lists@uece.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'fs/inode.c')
0 files changed, 0 insertions, 0 deletions