aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/ip_sockglue.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index ce1386a67e24..ebd953bc5607 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -116,10 +116,10 @@ static void ip_cmsg_recv_checksum(struct msghdr *msg, struct sk_buff *skb,
116 if (skb->ip_summed != CHECKSUM_COMPLETE) 116 if (skb->ip_summed != CHECKSUM_COMPLETE)
117 return; 117 return;
118 118
119 if (offset != 0) 119 if (offset != 0) {
120 csum = csum_sub(csum, 120 int tend_off = skb_transport_offset(skb) + tlen;
121 csum_partial(skb_transport_header(skb) + tlen, 121 csum = csum_sub(csum, skb_checksum(skb, tend_off, offset, 0));
122 offset, 0)); 122 }
123 123
124 put_cmsg(msg, SOL_IP, IP_CHECKSUM, sizeof(__wsum), &csum); 124 put_cmsg(msg, SOL_IP, IP_CHECKSUM, sizeof(__wsum), &csum);
125} 125}