diff options
author | Pravin B Shelar <pshelar@nicira.com> | 2014-03-24 01:06:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-26 15:18:40 -0400 |
commit | fbd02dd405d0724a0f25897ed4a6813297c9b96f (patch) | |
tree | 4ebae2c7d156ffa99c1c6ec2d14a8061d0a7b742 /net/ipv4/ip_tunnel.c | |
parent | 632b06aa2842b12c6d6a510ec080fb6ebdb38ea5 (diff) |
ip_tunnel: Fix dst ref-count.
Commit 10ddceb22ba (ip_tunnel:multicast process cause panic due
to skb->_skb_refdst NULL pointer) removed dst-drop call from
ip-tunnel-recv.
Following commit reintroduce dst-drop and fix the original bug by
checking loopback packet before releasing dst.
Original bug: https://bugzilla.kernel.org/show_bug.cgi?id=70681
CC: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ip_tunnel.c')
-rw-r--r-- | net/ipv4/ip_tunnel.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c index 78a89e61925d..a82a22d8f77f 100644 --- a/net/ipv4/ip_tunnel.c +++ b/net/ipv4/ip_tunnel.c | |||
@@ -416,9 +416,6 @@ int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb, | |||
416 | 416 | ||
417 | #ifdef CONFIG_NET_IPGRE_BROADCAST | 417 | #ifdef CONFIG_NET_IPGRE_BROADCAST |
418 | if (ipv4_is_multicast(iph->daddr)) { | 418 | if (ipv4_is_multicast(iph->daddr)) { |
419 | /* Looped back packet, drop it! */ | ||
420 | if (rt_is_output_route(skb_rtable(skb))) | ||
421 | goto drop; | ||
422 | tunnel->dev->stats.multicast++; | 419 | tunnel->dev->stats.multicast++; |
423 | skb->pkt_type = PACKET_BROADCAST; | 420 | skb->pkt_type = PACKET_BROADCAST; |
424 | } | 421 | } |