xfrm: Release dst if this dst is improper for vti tunnel
authorfan.du <fan.du@windriver.com>
Tue, 19 Nov 2013 08:53:28 +0000 (16:53 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 Nov 2013 20:50:57 +0000 (15:50 -0500)
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>
net/ipv4/ip_vti.c

index 5d9c845d288a3d8cce3eb96aeb65384e4a56edbc..52b802a0cd8cbda18579dd1811bce3405ecbdfdc 100644 (file)
@@ -126,6 +126,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;