Skip to content

Commit

Permalink
netfilter: ipset: Fix hash resizing with comments
Browse files Browse the repository at this point in the history
The destroy function must take into account that resizing doesn't
create new extensions so those cannot be destroyed at resize.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
  • Loading branch information
Jozsef Kadlecsik committed Sep 30, 2013
1 parent fda75c6 commit 80571a9
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions net/netfilter/ipset/ip_set_hash_gen.h
Original file line number Diff line number Diff line change
Expand Up @@ -393,15 +393,15 @@ mtype_flush(struct ip_set *set)

/* Destroy the hashtable part of the set */
static void
mtype_ahash_destroy(struct ip_set *set, struct htable *t)
mtype_ahash_destroy(struct ip_set *set, struct htable *t, bool ext_destroy)
{
struct hbucket *n;
u32 i;

for (i = 0; i < jhash_size(t->htable_bits); i++) {
n = hbucket(t, i);
if (n->size) {
if (set->extensions & IPSET_EXT_DESTROY)
if (set->extensions & IPSET_EXT_DESTROY && ext_destroy)
mtype_ext_cleanup(set, n);
/* FIXME: use slab cache */
kfree(n->value);
Expand All @@ -420,7 +420,7 @@ mtype_destroy(struct ip_set *set)
if (set->extensions & IPSET_EXT_TIMEOUT)
del_timer_sync(&h->gc);

mtype_ahash_destroy(set, rcu_dereference_bh_nfnl(h->table));
mtype_ahash_destroy(set, rcu_dereference_bh_nfnl(h->table), true);
#ifdef IP_SET_HASH_WITH_RBTREE
rbtree_destroy(&h->rbtree);
#endif
Expand Down Expand Up @@ -586,7 +586,7 @@ mtype_resize(struct ip_set *set, bool retried)
mtype_data_reset_flags(data, &flags);
#endif
read_unlock_bh(&set->lock);
mtype_ahash_destroy(set, t);
mtype_ahash_destroy(set, t, false);
if (ret == -EAGAIN)
goto retry;
return ret;
Expand All @@ -607,7 +607,7 @@ mtype_resize(struct ip_set *set, bool retried)

pr_debug("set %s resized from %u (%p) to %u (%p)\n", set->name,
orig->htable_bits, orig, t->htable_bits, t);
mtype_ahash_destroy(set, orig);
mtype_ahash_destroy(set, orig, false);

return 0;
}
Expand Down

0 comments on commit 80571a9

Please sign in to comment.