Re: [PATCH - revised] rhashtable: detect when object movement might have invalidated a lookup

From: Herbert Xu
Date: Sun Jul 15 2018 - 22:17:19 EST


On Mon, Jul 16, 2018 at 11:23:43AM +1000, NeilBrown wrote:
>
> kmem_cache_free() directly. For this, I need rhashtable to be safe if
> an object is deleted and immediately re-inserted into the same hash
> chain.

This means that

rcu_read_lock();
A = rhashtable_lookup();
use(A);
rcu_read_unlock();

A can turn into object B when it is used. That is just too strange
for words. Can we see some actual code on how this works?

For comparison, the existing net code where this happens A doesn't
actually change and it simply moves from one hashtable to another.

I'm relucant to add semantics that would restrain on how rhashtable
works unless we have real and valid use-cases for it.

Cheers,
--
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt