From: Stephen Hemminger Date: Sun, 10 Feb 2008 07:26:53 +0000 (-0800) Subject: [PKT_SCHED] ematch: tcf_em_destroy robustness X-Git-Tag: v2.6.25-rc1~7^2~10 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=954415e33ed6cfa932c13e8c2460bd05e50723b5;p=linux-2.6 [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: Stephen Hemminger Signed-off-by: David S. Miller --- diff --git a/net/sched/ematch.c b/net/sched/ematch.c index d421ec728e..b29439ddcf 100644 --- a/net/sched/ematch.c +++ b/net/sched/ematch.c @@ -409,14 +409,15 @@ void tcf_em_tree_destroy(struct tcf_proto *tp, struct tcf_ematch_tree *tree) if (em->ops) { if (em->ops->destroy) em->ops->destroy(tp, em); - else if (!tcf_em_is_simple(em) && em->data) - kfree((void *) em->data); + else if (!tcf_em_is_simple(em)) + kfree(em->data); module_put(em->ops->owner); } } tree->hdr.nmatches = 0; kfree(tree->matches); + tree->matches = NULL; } EXPORT_SYMBOL(tcf_em_tree_destroy);