mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
rhashtable: Fix RCU dereference annotation in rht_bucket_nested
The current annotation is wrong as it says that we're only called
under spinlock. In fact it should be marked as under either
spinlock or RCU read lock.
Fixes: da20420f83
("rhashtable: Add nested tables")
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
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
ca435407ba
commit
c4d2603dac
@ -1121,12 +1121,13 @@ struct rhash_head __rcu **rht_bucket_nested(const struct bucket_table *tbl,
|
|||||||
union nested_table *ntbl;
|
union nested_table *ntbl;
|
||||||
|
|
||||||
ntbl = (union nested_table *)rcu_dereference_raw(tbl->buckets[0]);
|
ntbl = (union nested_table *)rcu_dereference_raw(tbl->buckets[0]);
|
||||||
ntbl = rht_dereference_bucket(ntbl[index].table, tbl, hash);
|
ntbl = rht_dereference_bucket_rcu(ntbl[index].table, tbl, hash);
|
||||||
subhash >>= tbl->nest;
|
subhash >>= tbl->nest;
|
||||||
|
|
||||||
while (ntbl && size > (1 << shift)) {
|
while (ntbl && size > (1 << shift)) {
|
||||||
index = subhash & ((1 << shift) - 1);
|
index = subhash & ((1 << shift) - 1);
|
||||||
ntbl = rht_dereference_bucket(ntbl[index].table, tbl, hash);
|
ntbl = rht_dereference_bucket_rcu(ntbl[index].table,
|
||||||
|
tbl, hash);
|
||||||
size >>= shift;
|
size >>= shift;
|
||||||
subhash >>= shift;
|
subhash >>= shift;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user