diff options
author | David S. Miller <davem@davemloft.net> | 2014-09-26 16:21:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-09-26 16:21:29 -0400 |
commit | e7af85db54430c7cb7e15de9b3e0f72074d94dfb (patch) | |
tree | 4827f6435c305b95ae7a1b46d3a8ab230291d25a /lib/rhashtable.c | |
parent | 445f7f4d62628cb2971db884084d162ecb622ec7 (diff) | |
parent | 679ab4ddbdfab8af39104e63819db71f428aefd9 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
Pablo Neira Ayuso says:
====================
nf pull request for net
This series contains netfilter fixes for net, they are:
1) Fix lockdep splat in nft_hash when releasing sets from the
rcu_callback context. We don't the mutex there anymore.
2) Remove unnecessary spinlock_bh in the destroy path of the nf_tables
rbtree set type from rcu_callback context.
3) Fix another lockdep splat in rhashtable. None of the callers hold
a mutex when calling rhashtable_destroy.
4) Fix duplicated error reporting from nfnetlink when aborting and
replaying a batch.
5) Fix a Kconfig issue reported by kbuild robot.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib/rhashtable.c')
-rw-r--r-- | lib/rhashtable.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/rhashtable.c b/lib/rhashtable.c index 7b36e4d40ed7..16d02639d334 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c | |||
@@ -588,13 +588,13 @@ EXPORT_SYMBOL_GPL(rhashtable_init); | |||
588 | * rhashtable_destroy - destroy hash table | 588 | * rhashtable_destroy - destroy hash table |
589 | * @ht: the hash table to destroy | 589 | * @ht: the hash table to destroy |
590 | * | 590 | * |
591 | * Frees the bucket array. | 591 | * Frees the bucket array. This function is not rcu safe, therefore the caller |
592 | * has to make sure that no resizing may happen by unpublishing the hashtable | ||
593 | * and waiting for the quiescent cycle before releasing the bucket array. | ||
592 | */ | 594 | */ |
593 | void rhashtable_destroy(const struct rhashtable *ht) | 595 | void rhashtable_destroy(const struct rhashtable *ht) |
594 | { | 596 | { |
595 | const struct bucket_table *tbl = rht_dereference(ht->tbl, ht); | 597 | bucket_table_free(ht->tbl); |
596 | |||
597 | bucket_table_free(tbl); | ||
598 | } | 598 | } |
599 | EXPORT_SYMBOL_GPL(rhashtable_destroy); | 599 | EXPORT_SYMBOL_GPL(rhashtable_destroy); |
600 | 600 | ||