• Hannes Frederic Sowa's avatar
    ipv6: no CHECKSUM_PARTIAL on MSG_MORE corked sockets · b4111a54
    Hannes Frederic Sowa authored
    commit 682b1a9d upstream.
    
    We cannot reliable calculate packet size on MSG_MORE corked sockets
    and thus cannot decide if they are going to be fragmented later on,
    so better not use CHECKSUM_PARTIAL in the first place.
    
    The IPv6 code also intended to protect and not use CHECKSUM_PARTIAL in
    the existence of IPv6 extension headers, but the condition was wrong. Fix
    it up, too. Also the condition to check whether the packet fits into
    one fragment was wrong and has been corrected.
    
    Fixes: commit 32dce968 ("ipv6: Allow for partial checksums on non-ufo packets")
    See-also: commit 72e843bb ("ipv6: ip6_fragment() should check CHECKSUM_PARTIAL")
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Benjamin Coddington <bcodding@redhat.com>
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
    b4111a54
ip6_output.c 44.2 KB