summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfan.du <fan.du@windriver.com>2013-11-19 08:53:28 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-12-08 15:29:14 (GMT)
commitfa3735e9981998674f23fb99212a591a5a69a9b0 (patch)
tree65eb4f41f3f9fef3266d1362989c43b660411d95
parent0a6905b2186e5ae1715545d067dde8ad830fc3f5 (diff)
downloadlinux-fsl-qoriq-fa3735e9981998674f23fb99212a591a5a69a9b0.tar.xz
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 6e87f85..26847e1 100644
--- a/net/ipv4/ip_vti.c
+++ b/net/ipv4/ip_vti.c
@@ -190,6 +190,7 @@ static netdev_tx_t vti_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
if (!rt->dst.xfrm ||
rt->dst.xfrm->props.mode != XFRM_MODE_TUNNEL) {
dev->stats.tx_carrier_errors++;
+ ip_rt_put(rt);
goto tx_error_icmp;
}
tdev = rt->dst.dev;