]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
udpv6: Fix the checksum computation when HW checksum does not apply
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Thu, 14 Sep 2017 01:30:51 +0000 (19:30 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 21 Oct 2017 15:09:02 +0000 (17:09 +0200)
[ 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>
net/ipv6/udp.c

index 6fd4af3b5b797850aeb2b6f7eb21e3129ba2941c..6eb1e9293b6f291c72e890a6af14c3f21217481c 100644 (file)
@@ -1007,6 +1007,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;