summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>2017-09-13 19:30:51 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-10-12 11:51:20 +0200
commitf0a5af78b530ab5616d6fcde79d28ad57ecaea3e (patch)
tree489bd3cb08537ee9b4495714f6e5814c361dc113
parent85908ccae5c2510aff7b9ef2e3e859ffa8f8824c (diff)
downloadlinux-stable-f0a5af78b530ab5616d6fcde79d28ad57ecaea3e.tar.gz
linux-stable-f0a5af78b530ab5616d6fcde79d28ad57ecaea3e.tar.bz2
linux-stable-f0a5af78b530ab5616d6fcde79d28ad57ecaea3e.zip
udpv6: Fix the checksum computation when HW checksum does not apply
[ Upstream commit 63ecc3d9436f8012e49dc846d6cb0a85a3433517 ] While trying an ESP transport mode encryption for UDPv6 packets of datagram size 1436 with MTU 1500, checksum error was observed in the secondary fragment. This error occurs due to the UDP payload checksum being missed out when computing the full checksum for these packets in udp6_hwcsum_outgoing(). Fixes: d39d938c8228 ("ipv6: Introduce udpv6_send_skb()") Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/ipv6/udp.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 2497f62fa4c2..4db5f541bca6 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -915,6 +915,7 @@ static void udp6_hwcsum_outgoing(struct sock *sk, struct sk_buff *skb,
*/
offset = skb_transport_offset(skb);
skb->csum = skb_checksum(skb, offset, skb->len - offset, 0);
+ csum = skb->csum;
skb->ip_summed = CHECKSUM_NONE;