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

[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
...@@ -409,14 +409,15 @@ void tcf_em_tree_destroy(struct tcf_proto *tp, struct tcf_ematch_tree *tree) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment