diff options
Diffstat (limited to 'net/ipv6/ip6_tunnel.c')
-rw-r--r-- | net/ipv6/ip6_tunnel.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index cf94372d1af3..e315d0f80af1 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c | |||
@@ -525,6 +525,7 @@ ip6ip6_rcv(struct sk_buff **pskb, unsigned int *nhoffp) | |||
525 | 525 | ||
526 | if ((t = ip6ip6_tnl_lookup(&ipv6h->saddr, &ipv6h->daddr)) != NULL) { | 526 | if ((t = ip6ip6_tnl_lookup(&ipv6h->saddr, &ipv6h->daddr)) != NULL) { |
527 | if (!xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) { | 527 | if (!xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) { |
528 | read_unlock(&ip6ip6_lock); | ||
528 | kfree_skb(skb); | 529 | kfree_skb(skb); |
529 | return 0; | 530 | return 0; |
530 | } | 531 | } |
@@ -756,8 +757,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev) | |||
756 | } | 757 | } |
757 | ip6_tnl_dst_store(t, dst); | 758 | ip6_tnl_dst_store(t, dst); |
758 | 759 | ||
759 | if (opt) | 760 | kfree(opt); |
760 | kfree(opt); | ||
761 | 761 | ||
762 | t->recursion--; | 762 | t->recursion--; |
763 | return 0; | 763 | return 0; |
@@ -766,8 +766,7 @@ tx_err_link_failure: | |||
766 | dst_link_failure(skb); | 766 | dst_link_failure(skb); |
767 | tx_err_dst_release: | 767 | tx_err_dst_release: |
768 | dst_release(dst); | 768 | dst_release(dst); |
769 | if (opt) | 769 | kfree(opt); |
770 | kfree(opt); | ||
771 | tx_err: | 770 | tx_err: |
772 | stats->tx_errors++; | 771 | stats->tx_errors++; |
773 | stats->tx_dropped++; | 772 | stats->tx_dropped++; |