diff options
author | Cody P Schafer <cody@linux.vnet.ibm.com> | 2013-11-13 10:30:35 +0100 |
---|---|---|
committer | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2013-11-13 10:50:36 +0100 |
commit | 04ca6d3715d42277ef001f5a5252cd015d84279b (patch) | |
tree | ad9ef98667d0000304b43032e3ee92744fa05bdf /kernel/net | |
parent | ea39db5d0778ced5bbed902c2b62abe5e7ee8c39 (diff) |
net ipset: use rbtree postorder iteration instead of opencoding
Use rbtree_postorder_for_each_entry_safe() to destroy the rbtree instead
of opencoding an alternate postorder iteration that modifies the tree
Signed-off-by: Cody P Schafer <cody@linux.vnet.ibm.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Diffstat (limited to 'kernel/net')
-rw-r--r-- | kernel/net/netfilter/ipset/ip_set_hash_netiface.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/net/netfilter/ipset/ip_set_hash_netiface.c b/kernel/net/netfilter/ipset/ip_set_hash_netiface.c index 3f64a66..788825b 100644 --- a/kernel/net/netfilter/ipset/ip_set_hash_netiface.c +++ b/kernel/net/netfilter/ipset/ip_set_hash_netiface.c @@ -46,6 +46,14 @@ struct iface_node { static void rbtree_destroy(struct rb_root *root) { +#ifdef HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE + struct iface_node *node, *next; + + rbtree_postorder_for_each_entry_safe(node, next, root, node) + kfree(node); + + *root = RB_ROOT; +#else struct rb_node *p, *n = root->rb_node; struct iface_node *node; @@ -71,6 +79,7 @@ rbtree_destroy(struct rb_root *root) kfree(node); n = p; } +#endif } static int |