struct cls_cgroup_head,
rcu);
- tcf_exts_destroy(head->tp, &head->exts);
- tcf_em_tree_destroy(head->tp, &head->ematches);
+ tcf_exts_destroy(&head->exts);
+ tcf_em_tree_destroy(&head->ematches);
kfree(head);
}
err = tcf_em_tree_validate(tp, tb[TCA_CGROUP_EMATCHES], &t);
if (err < 0) {
- tcf_exts_destroy(tp, &e);
+ tcf_exts_destroy(&e);
goto errout;
}
struct cls_cgroup_head *head = rtnl_dereference(tp->root);
if (head) {
- tcf_exts_destroy(tp, &head->exts);
- tcf_em_tree_destroy(tp, &head->ematches);
RCU_INIT_POINTER(tp->root, NULL);
- kfree_rcu(head, rcu);
+ call_rcu(&head->rcu, cls_cgroup_destroy_rcu);
}
}