summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv6/icmp.c2
-rw-r--r--net/ipv6/raw.c2
2 files changed, 1 insertions, 3 deletions
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index 52cca93ff2f8..bd51847acd57 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -247,8 +247,6 @@ static int icmpv6_push_pending_frames(struct sock *sk, struct flowi *fl, struct
len, fl->proto, tmp_csum);
icmp6h->icmp6_cksum = tmp_csum;
}
- if (icmp6h->icmp6_cksum == 0)
- icmp6h->icmp6_cksum = -1;
ip6_push_pending_frames(sk);
out:
return err;
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index 18a90075f942..813fa1d96862 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -536,7 +536,7 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,
&fl->fl6_dst,
total_len, fl->proto, tmp_csum);
- if (tmp_csum == 0)
+ if (tmp_csum == 0 && fl->proto == IPPROTO_UDP)
tmp_csum = -1;
csum = tmp_csum;