|
|
@@ -1610,16 +1610,8 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
|
|
|
if (!pskb_may_pull(skb2, sizeof(*ih)))
|
|
|
goto out;
|
|
|
|
|
|
- switch (skb2->ip_summed) {
|
|
|
- case CHECKSUM_COMPLETE:
|
|
|
- if (!csum_fold(skb2->csum))
|
|
|
- break;
|
|
|
- /* fall through */
|
|
|
- case CHECKSUM_NONE:
|
|
|
- skb2->csum = 0;
|
|
|
- if (skb_checksum_complete(skb2))
|
|
|
- goto out;
|
|
|
- }
|
|
|
+ if (skb_checksum_simple_validate(skb2))
|
|
|
+ goto out;
|
|
|
|
|
|
err = 0;
|
|
|
|
|
|
@@ -1737,20 +1729,8 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
|
|
|
|
|
|
ip6h = ipv6_hdr(skb2);
|
|
|
|
|
|
- switch (skb2->ip_summed) {
|
|
|
- case CHECKSUM_COMPLETE:
|
|
|
- if (!csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr, skb2->len,
|
|
|
- IPPROTO_ICMPV6, skb2->csum))
|
|
|
- break;
|
|
|
- /*FALLTHROUGH*/
|
|
|
- case CHECKSUM_NONE:
|
|
|
- skb2->csum = ~csum_unfold(csum_ipv6_magic(&ip6h->saddr,
|
|
|
- &ip6h->daddr,
|
|
|
- skb2->len,
|
|
|
- IPPROTO_ICMPV6, 0));
|
|
|
- if (__skb_checksum_complete(skb2))
|
|
|
- goto out;
|
|
|
- }
|
|
|
+ if (skb_checksum_validate(skb2, IPPROTO_ICMPV6, ip6_compute_pseudo))
|
|
|
+ goto out;
|
|
|
|
|
|
err = 0;
|
|
|
|