sched: move tcf_proto_destroy and tcf_destroy_chain helpers into cls_api
Creation is done in this file, move destruction to be at the same place. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
79112c26f1
commit
cf1facda2f
@@ -127,6 +127,27 @@ static inline u32 tcf_auto_prio(struct tcf_proto *tp)
|
||||
return first;
|
||||
}
|
||||
|
||||
static bool tcf_proto_destroy(struct tcf_proto *tp, bool force)
|
||||
{
|
||||
if (tp->ops->destroy(tp, force)) {
|
||||
module_put(tp->ops->owner);
|
||||
kfree_rcu(tp, rcu);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void tcf_destroy_chain(struct tcf_proto __rcu **fl)
|
||||
{
|
||||
struct tcf_proto *tp;
|
||||
|
||||
while ((tp = rtnl_dereference(*fl)) != NULL) {
|
||||
RCU_INIT_POINTER(*fl, tp->next);
|
||||
tcf_proto_destroy(tp, true);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(tcf_destroy_chain);
|
||||
|
||||
/* Add/change/delete/get a filter node */
|
||||
|
||||
static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n)
|
||||
|
Reference in New Issue
Block a user