summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>2017-09-13 19:30:51 -0600
committerDavid S. Miller <davem@davemloft.net>2017-09-18 11:43:03 -0700
commit63ecc3d9436f8012e49dc846d6cb0a85a3433517 (patch)
treefa288b0e21b27b3cb960f28a84dcad9342f4e850 /net
parent2bd6bf03f4c1c59381d62c61d03f6cc3fe71f66e (diff)
downloadlinux-exynos-63ecc3d9436f8012e49dc846d6cb0a85a3433517.tar.gz
linux-exynos-63ecc3d9436f8012e49dc846d6cb0a85a3433517.tar.bz2
linux-exynos-63ecc3d9436f8012e49dc846d6cb0a85a3433517.zip
udpv6: Fix the checksum computation when HW checksum does not apply
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>
Diffstat (limited to 'net')
-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 e2ecfb137297..40d7234c27b9 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -1015,6 +1015,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;