summaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6_output.c
diff options
context:
space:
mode:
authorVlad Yasevich <vyasevich@gmail.com>2015-02-10 11:37:29 -0500
committerDavid S. Miller <davem@davemloft.net>2015-02-11 14:32:08 -0800
commitbf250a1fa769f2eb8fc7a4e28b3b523e9cb67eef (patch)
treeacbdd58a049f11502508ae1750f2a39a03cdcabb /net/ipv6/ip6_output.c
parent4a3046d68a5a6b7a2474c9d65811091841675cdb (diff)
downloadlinux-bf250a1fa769f2eb8fc7a4e28b3b523e9cb67eef.tar.gz
linux-bf250a1fa769f2eb8fc7a4e28b3b523e9cb67eef.tar.bz2
linux-bf250a1fa769f2eb8fc7a4e28b3b523e9cb67eef.zip
ipv6: Partial checksum only UDP packets
ip6_append_data is used by other protocols and some of them can't be partially checksummed. Only partially checksum UDP protocol. Fixes: 32dce968dd987a (ipv6: Allow for partial checksums on non-ufo packets) Reported-by: Sabrina Dubroca <sd@queasysnail.net> Tested-by: Sabrina Dubroca <sd@queasysnail.net> Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r--net/ipv6/ip6_output.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index d33df4cbd872..7deebf102cba 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1273,7 +1273,7 @@ emsgsize:
/* If this is the first and only packet and device
* supports checksum offloading, let's use it.
*/
- if (!skb &&
+ if (!skb && sk->sk_protocol == IPPROTO_UDP &&
length + fragheaderlen < mtu &&
rt->dst.dev->features & NETIF_F_V6_CSUM &&
!exthdrlen)