aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6mr.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ip6mr.c')
-rw-r--r--net/ipv6/ip6mr.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
index 82a809901f8..def0538e241 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -696,8 +696,10 @@ static netdev_tx_t reg_vif_xmit(struct sk_buff *skb,
696 int err; 696 int err;
697 697
698 err = ip6mr_fib_lookup(net, &fl6, &mrt); 698 err = ip6mr_fib_lookup(net, &fl6, &mrt);
699 if (err < 0) 699 if (err < 0) {
700 kfree_skb(skb);
700 return err; 701 return err;
702 }
701 703
702 read_lock(&mrt_lock); 704 read_lock(&mrt_lock);
703 dev->stats.tx_bytes += skb->len; 705 dev->stats.tx_bytes += skb->len;
@@ -1354,7 +1356,8 @@ int __init ip6_mr_init(void)
1354 goto add_proto_fail; 1356 goto add_proto_fail;
1355 } 1357 }
1356#endif 1358#endif
1357 rtnl_register(RTNL_FAMILY_IP6MR, RTM_GETROUTE, NULL, ip6mr_rtm_dumproute); 1359 rtnl_register(RTNL_FAMILY_IP6MR, RTM_GETROUTE, NULL,
1360 ip6mr_rtm_dumproute, NULL);
1358 return 0; 1361 return 0;
1359#ifdef CONFIG_IPV6_PIMSM_V2 1362#ifdef CONFIG_IPV6_PIMSM_V2
1360add_proto_fail: 1363add_proto_fail:
@@ -2051,8 +2054,10 @@ int ip6_mr_input(struct sk_buff *skb)
2051 int err; 2054 int err;
2052 2055
2053 err = ip6mr_fib_lookup(net, &fl6, &mrt); 2056 err = ip6mr_fib_lookup(net, &fl6, &mrt);
2054 if (err < 0) 2057 if (err < 0) {
2058 kfree_skb(skb);
2055 return err; 2059 return err;
2060 }
2056 2061
2057 read_lock(&mrt_lock); 2062 read_lock(&mrt_lock);
2058 cache = ip6mr_cache_find(mrt, 2063 cache = ip6mr_cache_find(mrt,