ipv4: Fix neigh lookup keying over loopback/point-to-point devices.
authorDavid S. Miller <davem@davemloft.net>
Fri, 20 Jul 2012 23:00:53 +0000 (16:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Jul 2012 23:06:10 +0000 (16:06 -0700)
We were using a special key "0" for all loopback and point-to-point
device neigh lookups under ipv4, but we wouldn't use that special
key for the neigh creation.

So basically we'd make a new neigh at each and every lookup :-)

This special case to use only one neigh for these device types
is of dubious value, so just remove it entirely.

Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/arp.h

index 4617d98..7f7df93 100644 (file)
@@ -21,9 +21,6 @@ static inline struct neighbour *__ipv4_neigh_lookup_noref(struct net_device *dev
        struct neighbour *n;
        u32 hash_val;
 
-       if (dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))
-               key = 0;
-
        hash_val = arp_hashfn(key, dev, nht->hash_rnd[0]) >> (32 - nht->hash_shift);
        for (n = rcu_dereference_bh(nht->hash_buckets[hash_val]);
             n != NULL;