• Douglas Caetano dos Santos's avatar
    tcp: fix wrong checksum calculation on MTU probing · 2fe664f1
    Douglas Caetano dos Santos authored
    With TCP MTU probing enabled and offload TX checksumming disabled,
    tcp_mtu_probe() calculated the wrong checksum when a fragment being copied
    into the probe's SKB had an odd length. This was caused by the direct use
    of skb_copy_and_csum_bits() to calculate the checksum, as it pads the
    fragment being copied, if needed. When this fragment was not the last, a
    subsequent call used the previous checksum without considering this
    padding.
    
    The effect was a stale connection in one way, as even retransmissions
    wouldn't solve the problem, because the checksum was never recalculated for
    the full SKB length.
    Signed-off-by: default avatarDouglas Caetano dos Santos <douglascs@taghos.com.br>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2fe664f1
tcp_output.c 103 KB