Re: [PATCH v3.17 .. v3.19] lib/rhashtable: fix race between rhashtable_lookup_compare and hashtable resize
From: Thomas Graf <tgraf@suug.ch>
Date: 2015-06-30 06:28:39
Also in:
netdev
From: Thomas Graf <tgraf@suug.ch>
Date: 2015-06-30 06:28:39
Also in:
netdev
On 06/26/15 at 01:48pm, Konstantin Khlebnikov wrote:
Hash value passed as argument into rhashtable_lookup_compare could be
computed using different hash table than rhashtable_lookup_compare sees.
This patch passes key into rhashtable_lookup_compare() instead of hash and
compures hash value right in place using the same table as for lookup.
Also it adds comment for rhashtable_hashfn and rhashtable_obj_hashfn:
user must prevent concurrent insert/remove otherwise returned hash value
could be invalid.
Signed-off-by: Konstantin Khlebnikov <redacted>
Fixes: e341694e3eb5 ("netlink: Convert netlink_lookup() to use RCU protected hash table")
Link: http://lkml.kernel.org/r/20150514042151.GA5482@gondor.apana.org.au
Cc: Stable <redacted> (v3.17 .. v3.19)
Nice catch.
For reference, this is a partial cherry pick of
8d24c0b43125e ("rhashtable: Do hashing inside of rhashtable_lookup_compare()")
nft_hash is not affected as it doesn't use the lookup API until 4.0.
Acked-by: Thomas Graf <tgraf@suug.ch>