diff options
Diffstat (limited to 'net/ipv6/ip6_input.c')
| -rw-r--r-- | net/ipv6/ip6_input.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index 5b10414e619e..e33fe0ab2568 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c | |||
| @@ -241,9 +241,11 @@ resubmit: | |||
| 241 | icmpv6_send(skb, ICMPV6_PARAMPROB, | 241 | icmpv6_send(skb, ICMPV6_PARAMPROB, |
| 242 | ICMPV6_UNK_NEXTHDR, nhoff); | 242 | ICMPV6_UNK_NEXTHDR, nhoff); |
| 243 | } | 243 | } |
| 244 | } else | 244 | kfree_skb(skb); |
| 245 | } else { | ||
| 245 | IP6_INC_STATS_BH(net, idev, IPSTATS_MIB_INDELIVERS); | 246 | IP6_INC_STATS_BH(net, idev, IPSTATS_MIB_INDELIVERS); |
| 246 | kfree_skb(skb); | 247 | consume_skb(skb); |
| 248 | } | ||
| 247 | } | 249 | } |
| 248 | rcu_read_unlock(); | 250 | rcu_read_unlock(); |
| 249 | return 0; | 251 | return 0; |
| @@ -279,7 +281,8 @@ int ip6_mc_input(struct sk_buff *skb) | |||
| 279 | * IPv6 multicast router mode is now supported ;) | 281 | * IPv6 multicast router mode is now supported ;) |
| 280 | */ | 282 | */ |
| 281 | if (dev_net(skb->dev)->ipv6.devconf_all->mc_forwarding && | 283 | if (dev_net(skb->dev)->ipv6.devconf_all->mc_forwarding && |
| 282 | !(ipv6_addr_type(&hdr->daddr) & IPV6_ADDR_LINKLOCAL) && | 284 | !(ipv6_addr_type(&hdr->daddr) & |
| 285 | (IPV6_ADDR_LOOPBACK|IPV6_ADDR_LINKLOCAL)) && | ||
| 283 | likely(!(IP6CB(skb)->flags & IP6SKB_FORWARDED))) { | 286 | likely(!(IP6CB(skb)->flags & IP6SKB_FORWARDED))) { |
| 284 | /* | 287 | /* |
| 285 | * Okay, we try to forward - split and duplicate | 288 | * Okay, we try to forward - split and duplicate |
