aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfan.du <fan.du@windriver.com>2013-11-19 03:53:28 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-12-08 10:29:25 -0500
commitbdf1643e0536042df717443d6bfd73e07643c237 (patch)
tree8646abb265c4427179d67270e068c016dec4746b
parentfddd8b501c59c87d63a0917c8e9e14bd28e3c724 (diff)
xfrm: Release dst if this dst is improper for vti tunnel
[ Upstream commit 236c9f84868534c718b6889aa624de64763281f9 ] After searching rt by the vti tunnel dst/src parameter, if this rt has neither attached to any transformation nor the transformation is not tunnel oriented, this rt should be released back to ip layer. otherwise causing dst memory leakage. Signed-off-by: Fan Du <fan.du@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/ipv4/ip_vti.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
index 065604127418..feb19db62359 100644
--- a/net/ipv4/ip_vti.c
+++ b/net/ipv4/ip_vti.c
@@ -350,6 +350,7 @@ static netdev_tx_t vti_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
350 if (!rt->dst.xfrm || 350 if (!rt->dst.xfrm ||
351 rt->dst.xfrm->props.mode != XFRM_MODE_TUNNEL) { 351 rt->dst.xfrm->props.mode != XFRM_MODE_TUNNEL) {
352 dev->stats.tx_carrier_errors++; 352 dev->stats.tx_carrier_errors++;
353 ip_rt_put(rt);
353 goto tx_error_icmp; 354 goto tx_error_icmp;
354 } 355 }
355 tdev = rt->dst.dev; 356 tdev = rt->dst.dev;