return -1;
}
-
+static inline void tcf_destroy(struct tcf_proto *tp)
+{
+ tp->ops->destroy(tp);
+ module_put(tp->ops->owner);
+ kfree(tp);
+}
extern int register_tcf_proto_ops(struct tcf_proto_ops *ops);
extern int unregister_tcf_proto_ops(struct tcf_proto_ops *ops);
*back = tp->next;
spin_unlock_bh(&dev->queue_lock);
write_unlock(&qdisc_tree_lock);
-
- tp->ops->destroy(tp);
- module_put(tp->ops->owner);
- kfree(tp);
+ tcf_destroy(tp);
err = 0;
goto errout;
}
while ((filter = flow->filter_list)) {
DPRINTK("destroy_filters: destroying filter %p\n",filter);
flow->filter_list = filter->next;
- filter->ops->destroy(filter);
+ tcf_destroy(filter);
}
}
while ((tp = cl->filter_list) != NULL) {
cl->filter_list = tp->next;
- tp->ops->destroy(tp);
+ tcf_destroy(tp);
}
}
while ((tp = q->filter_list) != NULL) {
q->filter_list = tp->next;
- tp->ops->destroy(tp);
+ tcf_destroy(tp);
}
}
while (p->filter_list) {
tp = p->filter_list;
p->filter_list = tp->next;
- tp->ops->destroy(tp);
+ tcf_destroy(tp);
}
qdisc_destroy(p->q);
p->q = &noop_qdisc;
while ((tp = *fl) != NULL) {
*fl = tp->next;
- tp->ops->destroy(tp);
+ tcf_destroy(tp);
}
}
while (p->filter_list) {
tp = p->filter_list;
p->filter_list = tp->next;
- tp->ops->destroy(tp);
+ tcf_destroy(tp);
}
memset(p, 0, sizeof(*p));
p->filter_list = NULL;
while ((tp = q->filter_list) != NULL) {
q->filter_list = tp->next;
- tp->ops->destroy(tp);
+ tcf_destroy(tp);
}
for (prio=0; prio<q->bands; prio++) {