]> git.baikalelectronics.ru Git - kernel.git/commit
ipv6: no CHECKSUM_PARTIAL on MSG_MORE corked sockets
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Tue, 27 Oct 2015 21:40:41 +0000 (22:40 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 1 Nov 2015 17:01:27 +0000 (12:01 -0500)
commit7e73b8f0e04ee1361c0d340c7842d18bed073f5b
treea44f0abba04be4bd11633764983320cab253939a
parenta2aeedadb7dcf7dd2a1692a264581aa7e3ddf196
ipv6: no CHECKSUM_PARTIAL on MSG_MORE corked sockets

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 a491bc6c2df26 ("ipv6: Allow for partial checksums on non-ufo packets")
See-also: commit e75e348acd1ec ("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: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ip6_output.c