• Eric Dumazet's avatar
    tcp: fix retransmit of partially acked frames · 22b4a4f2
    Eric Dumazet authored
    Alexander Beregalov reported skb_over_panic errors and provided stack
    trace.
    
    I occurs commit a21d4572 (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: default avatarAlexander Beregalov <a.beregalov@gmail.com>
    Cc: Marc MERLIN <marc@merlins.org>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    22b4a4f2
tcp_output.c 82.6 KB