diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2015-12-19 10:45:28 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-12-18 23:44:18 -0500 |
commit | 179ccc0a73641ffd24e44ff10a7bd494efe98d8d (patch) | |
tree | e0a36b2c0879b531ccd9f0e8707e59afbc474f7b | |
parent | e905eabc90a5b787d8708df164543ee295bea5f2 (diff) |
rhashtable: Kill harmless RCU warning in rhashtable_walk_init
The commit c6ff5268293ef98e48a99597e765ffc417e39fa5 ("rhashtable:
Fix walker list corruption") causes a suspicious RCU usage warning
because we no longer hold ht->mutex when we dereference ht->tbl.
However, this is a false positive because we now hold ht->lock
which also guarantees that ht->tbl won't disppear from under us.
This patch kills the warning by using rcu_dereference_protected.
Reported-by: kernel test robot <ying.huang@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | lib/rhashtable.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/rhashtable.c b/lib/rhashtable.c index eb9240c458fa..51282f579760 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -519,7 +519,8 @@ int rhashtable_walk_init(struct rhashtable *ht, struct rhashtable_iter *iter) return -ENOMEM; spin_lock(&ht->lock); - iter->walker->tbl = rht_dereference(ht->tbl, ht); + iter->walker->tbl = + rcu_dereference_protected(ht->tbl, lockdep_is_held(&ht->lock)); list_add(&iter->walker->list, &iter->walker->tbl->walkers); spin_unlock(&ht->lock); |