aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorfan.du <fan.du@windriver.com>2013-11-19 03:53:28 -0500
committerDavid S. Miller <davem@davemloft.net>2013-11-19 15:50:57 -0500
commit236c9f84868534c718b6889aa624de64763281f9 (patch)
treef4f6ff344b2ef8e0f77de798733777f037bf78de /net/ipv4
parent840e93f2eee6ff0553cc2739ebc2395167a729f3 (diff)
xfrm: Release dst if this dst is improper for vti tunnel
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>
Diffstat (limited to 'net/ipv4')
-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 5d9c845d288a..52b802a0cd8c 100644
--- a/net/ipv4/ip_vti.c
+++ b/net/ipv4/ip_vti.c
@@ -126,6 +126,7 @@ static netdev_tx_t vti_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
126 if (!rt->dst.xfrm || 126 if (!rt->dst.xfrm ||
127 rt->dst.xfrm->props.mode != XFRM_MODE_TUNNEL) { 127 rt->dst.xfrm->props.mode != XFRM_MODE_TUNNEL) {
128 dev->stats.tx_carrier_errors++; 128 dev->stats.tx_carrier_errors++;
129 ip_rt_put(rt);
129 goto tx_error_icmp; 130 goto tx_error_icmp;
130 } 131 }
131 tdev = rt->dst.dev; 132 tdev = rt->dst.dev;