]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: fix retransmit of partially acked frames
authorEric Dumazet <edumazet@google.com>
Wed, 18 Apr 2012 10:14:23 +0000 (10:14 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Apr 2012 20:52:45 +0000 (16:52 -0400)
commit04dc62124f686c8e02b8502ea95cdcc9ed83f7ec
tree6cd9d5d169384e39c030e18f75c1b1e0d792e5bd
parenta3f6759c94410328397c3284f3f869ecaf7174b0
tcp: fix retransmit of partially acked frames

Alexander Beregalov reported skb_over_panic errors and provided stack
trace.

I occurs commit 150e035dfc99 (tcp: avoid order-1 allocations on wifi and
tx path) added a regression, when a retransmit is done after a partial
ACK.

tcp_retransmit_skb() tries to aggregate several frames if the first one
has enough available room to hold the following ones payload. This is
controlled by /proc/sys/net/ipv4/tcp_retrans_collapse tunable (default :
enabled)

Problem is we must make sure _pskb_trim_head() doesnt fool
skb_availroom() when pulling some bytes from skb (this pull is done when
receiver ACK part of the frame).

Reported-by: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Marc MERLIN <marc@merlins.org>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c