aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/ematch.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/ematch.c')
-rw-r--r--net/sched/ematch.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/net/sched/ematch.c b/net/sched/ematch.c
index 74ff918455a2..b29439ddcf71 100644
--- a/net/sched/ematch.c
+++ b/net/sched/ematch.c
@@ -312,10 +312,9 @@ int tcf_em_tree_validate(struct tcf_proto *tp, struct nlattr *nla,
312 struct tcf_ematch_tree_hdr *tree_hdr; 312 struct tcf_ematch_tree_hdr *tree_hdr;
313 struct tcf_ematch *em; 313 struct tcf_ematch *em;
314 314
315 if (!nla) { 315 memset(tree, 0, sizeof(*tree));
316 memset(tree, 0, sizeof(*tree)); 316 if (!nla)
317 return 0; 317 return 0;
318 }
319 318
320 err = nla_parse_nested(tb, TCA_EMATCH_TREE_MAX, nla, em_policy); 319 err = nla_parse_nested(tb, TCA_EMATCH_TREE_MAX, nla, em_policy);
321 if (err < 0) 320 if (err < 0)
@@ -410,14 +409,15 @@ void tcf_em_tree_destroy(struct tcf_proto *tp, struct tcf_ematch_tree *tree)
410 if (em->ops) { 409 if (em->ops) {
411 if (em->ops->destroy) 410 if (em->ops->destroy)
412 em->ops->destroy(tp, em); 411 em->ops->destroy(tp, em);
413 else if (!tcf_em_is_simple(em) && em->data) 412 else if (!tcf_em_is_simple(em))
414 kfree((void *) em->data); 413 kfree(em->data);
415 module_put(em->ops->owner); 414 module_put(em->ops->owner);
416 } 415 }
417 } 416 }
418 417
419 tree->hdr.nmatches = 0; 418 tree->hdr.nmatches = 0;
420 kfree(tree->matches); 419 kfree(tree->matches);
420 tree->matches = NULL;
421} 421}
422EXPORT_SYMBOL(tcf_em_tree_destroy); 422EXPORT_SYMBOL(tcf_em_tree_destroy);
423 423