diff options
Diffstat (limited to 'lib/rhashtable.c')
-rw-r--r-- | lib/rhashtable.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/rhashtable.c b/lib/rhashtable.c index a2c78810ebc1..3d2b4733f6cb 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -23,7 +23,6 @@ #include <linux/hash.h> #include <linux/random.h> #include <linux/rhashtable.h> -#include <linux/log2.h> #define HASH_DEFAULT_SIZE 64UL #define HASH_MIN_SIZE 4UL @@ -55,7 +54,7 @@ static u32 __hashfn(const struct rhashtable *ht, const void *key, /** * rhashtable_hashfn - compute hash for key of given length - * @ht: hash table to compuate for + * @ht: hash table to compute for * @key: pointer to key * @len: length of key * @@ -86,7 +85,7 @@ static u32 obj_hashfn(const struct rhashtable *ht, const void *ptr, u32 hsize) /** * rhashtable_obj_hashfn - compute hash for hashed object - * @ht: hash table to compuate for + * @ht: hash table to compute for * @ptr: pointer to hashed object * * Computes the hash value using the hash function `hashfn` respectively @@ -589,13 +588,13 @@ EXPORT_SYMBOL_GPL(rhashtable_init); * rhashtable_destroy - destroy hash table * @ht: the hash table to destroy * - * Frees the bucket array. + * Frees the bucket array. This function is not rcu safe, therefore the caller + * has to make sure that no resizing may happen by unpublishing the hashtable + * and waiting for the quiescent cycle before releasing the bucket array. */ void rhashtable_destroy(const struct rhashtable *ht) { - const struct bucket_table *tbl = rht_dereference(ht->tbl, ht); - - bucket_table_free(tbl); + bucket_table_free(ht->tbl); } EXPORT_SYMBOL_GPL(rhashtable_destroy); |