rhashtable: Fix read-side crash during rehash
This patch fixes a typo rhashtable_lookup_compare where we fail to recompute the hash when looking up the new table. This causes elements to be missed and potentially a crash during a resize. Reported-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a5b6846f9e
commit
393619474e
|
@ -606,8 +606,8 @@ void *rhashtable_lookup_compare(struct rhashtable *ht, const void *key,
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
|
|
||||||
tbl = rht_dereference_rcu(ht->tbl, ht);
|
tbl = rht_dereference_rcu(ht->tbl, ht);
|
||||||
hash = key_hashfn(ht, tbl, key);
|
|
||||||
restart:
|
restart:
|
||||||
|
hash = key_hashfn(ht, tbl, key);
|
||||||
rht_for_each_rcu(he, tbl, hash) {
|
rht_for_each_rcu(he, tbl, hash) {
|
||||||
if (!compare(rht_obj(ht, he), arg))
|
if (!compare(rht_obj(ht, he), arg))
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in a new issue