From: David S. Miller Date: Fri, 28 Jan 2011 22:07:16 +0000 (-0800) Subject: ipv4: If fib metrics are default, no need to grab ref to FIB info. X-Git-Tag: v2.6.39-rc1~468^2~444 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=b8dad61cc74b9ec71052e2a0e1c5119c65d166da;p=karo-tx-linux.git ipv4: If fib metrics are default, no need to grab ref to FIB info. The fib metric memory in this case is static in the kernel image, so we don't need to reference count it since it's never going to go away on us. Signed-off-by: David S. Miller --- diff --git a/net/ipv4/route.c b/net/ipv4/route.c index dd57f4896736..b1e5d3ac3460 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -1861,8 +1861,10 @@ static void rt_init_metrics(struct rtable *rt, struct fib_info *fi) { if (!(rt->fl.flags & FLOWI_FLAG_PRECOW_METRICS)) { no_cow: - rt->fi = fi; - atomic_inc(&fi->fib_clntref); + if (fi->fib_metrics != (u32 *) dst_default_metrics) { + rt->fi = fi; + atomic_inc(&fi->fib_clntref); + } dst_init_metrics(&rt->dst, fi->fib_metrics, true); } else { struct inet_peer *peer;