X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fsched%2Fcls_route.c;h=c2165492a3c3b713429666f2b3fd86b2327ae820;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=4c09012edbcece61935e899d53ae7426fd5e2e39;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c index 4c09012ed..c2165492a 100644 --- a/net/sched/cls_route.c +++ b/net/sched/cls_route.c @@ -297,7 +297,7 @@ static void route4_destroy(struct tcf_proto *tp) if ((cl = __cls_set_class(&f->res.class, 0)) != 0) tp->q->ops->cl_ops->unbind_tcf(tp->q, cl); #ifdef CONFIG_NET_CLS_POLICE - tcf_police_release(f->police); + tcf_police_release(f->police,TCA_ACT_UNBIND); #endif kfree(f); } @@ -336,7 +336,7 @@ static int route4_delete(struct tcf_proto *tp, unsigned long arg) tp->q->ops->cl_ops->unbind_tcf(tp->q, cl); #ifdef CONFIG_NET_CLS_POLICE - tcf_police_release(f->police); + tcf_police_release(f->police,TCA_ACT_UNBIND); #endif kfree(f); @@ -398,7 +398,7 @@ static int route4_change(struct tcf_proto *tp, unsigned long base, police = xchg(&f->police, police); tcf_tree_unlock(tp); - tcf_police_release(police); + tcf_police_release(police,TCA_ACT_UNBIND); } #endif return 0; @@ -591,7 +591,8 @@ static int route4_dump(struct tcf_proto *tp, unsigned long fh, rta->rta_len = skb->tail - b; #ifdef CONFIG_NET_CLS_POLICE if (f->police) { - if (qdisc_copy_stats(skb, &f->police->stats)) + if (qdisc_copy_stats(skb, &f->police->stats, + f->police->stats_lock)) goto rtattr_failure; } #endif