Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b182837a authored by Cody P Schafer's avatar Cody P Schafer Committed by Linus Torvalds
Browse files

net/netfilter/ipset/ip_set_hash_netiface.c: 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: default avatarCody P Schafer <cody@linux.vnet.ibm.com>
Cc: Michel Lespinasse <walken@google.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Patrick McHardy <kaber@trash.net>
Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 964fe94d
Loading
Loading
Loading
Loading
+4 −23
Original line number Diff line number Diff line
@@ -46,31 +46,12 @@ struct iface_node {
static void
rbtree_destroy(struct rb_root *root)
{
	struct rb_node *p, *n = root->rb_node;
	struct iface_node *node;

	/* Non-recursive destroy, like in ext3 */
	while (n) {
		if (n->rb_left) {
			n = n->rb_left;
			continue;
		}
		if (n->rb_right) {
			n = n->rb_right;
			continue;
		}
		p = rb_parent(n);
		node = rb_entry(n, struct iface_node, node);
		if (!p)
			*root = RB_ROOT;
		else if (p->rb_left == n)
			p->rb_left = NULL;
		else if (p->rb_right == n)
			p->rb_right = NULL;
	struct iface_node *node, *next;

	rbtree_postorder_for_each_entry_safe(node, next, root, node)
		kfree(node);
		n = p;
	}

	*root = RB_ROOT;
}

static int