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

Commit 954415e3 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller
Browse files

[PKT_SCHED] ematch: tcf_em_destroy robustness



Make the code in tcf_em_tree_destroy more robust and cleaner:
 * Don't need to cast pointer to kfree() or avoid passing NULL.
 * After freeing the tree, clear the pointer to avoid possible problems
from repeated free.

Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ed7af3b3
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -409,14 +409,15 @@ void tcf_em_tree_destroy(struct tcf_proto *tp, struct tcf_ematch_tree *tree)
		if (em->ops) {
		if (em->ops) {
			if (em->ops->destroy)
			if (em->ops->destroy)
				em->ops->destroy(tp, em);
				em->ops->destroy(tp, em);
			else if (!tcf_em_is_simple(em) && em->data)
			else if (!tcf_em_is_simple(em))
				kfree((void *) em->data);
				kfree(em->data);
			module_put(em->ops->owner);
			module_put(em->ops->owner);
		}
		}
	}
	}


	tree->hdr.nmatches = 0;
	tree->hdr.nmatches = 0;
	kfree(tree->matches);
	kfree(tree->matches);
	tree->matches = NULL;
}
}
EXPORT_SYMBOL(tcf_em_tree_destroy);
EXPORT_SYMBOL(tcf_em_tree_destroy);