ipv4: Get peer more cheaply in rt_init_metrics().
authorDavid S. Miller <davem@davemloft.net>
Sat, 5 Mar 2011 05:26:07 +0000 (21:26 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 5 Mar 2011 05:26:07 +0000 (21:26 -0800)
We know this is a new route object, so doing atomics and
stuff makes no sense at all.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c

index 6c8740362ef96bb2f9f386f7e2065f7115a3072e..9794a2c6023863ebb4b1303da55c367787fe3602 100644 (file)
@@ -1759,9 +1759,9 @@ static void rt_init_metrics(struct rtable *rt, struct fib_info *fi)
        if (rt->fl.flags & FLOWI_FLAG_PRECOW_METRICS)
                create = 1;
 
-       rt_bind_peer(rt, create);
-       peer = rt->peer;
+       rt->peer = peer = inet_getpeer_v4(rt->rt_dst, create);
        if (peer) {
+               rt->rt_peer_genid = rt_peer_genid();
                if (inet_metrics_new(peer))
                        memcpy(peer->metrics, fi->fib_metrics,
                               sizeof(u32) * RTAX_MAX);