Re: [PATCH 4/6] net neighbour: convert to RCU
From: Alexey Kuznetsov <hidden>
Date: 2006-08-29 15:29:01
From: Alexey Kuznetsov <hidden>
Date: 2006-08-29 15:29:01
Hello!
@@ -346,8 +354,8 @@ struct neighbour *neigh_lookup(struct ne NEIGH_CACHE_STAT_INC(tbl, lookups); - read_lock_bh(&tbl->lock); - hlist_for_each_entry(n, tmp, &tbl->hash_buckets[hash_val], hlist) { + rcu_read_lock(); + hlist_for_each_entry_rcu(n, tmp, &tbl->hash_buckets[hash_val], hlist) { if (dev == n->dev && !memcmp(n->primary_key, pkey, key_len)) { neigh_hold(n); NEIGH_CACHE_STAT_INC(tbl, hits);
Sure? Seems, you cannot grab refcnt here, the entry can be already released. Probably, you should do atomic_inc_and_test() here and restart lookup, if it fails. Alexey