]> git.hungrycats.org Git - linux/commitdiff
[SCHED]: Some schedulers forget to flush filter list at destroy.
authorDavid S. Miller <davem@nuts.ninka.net>
Thu, 10 Apr 2003 16:00:19 +0000 (09:00 -0700)
committerDavid S. Miller <davem@nuts.ninka.net>
Thu, 10 Apr 2003 16:00:19 +0000 (09:00 -0700)
net/sched/sch_csz.c
net/sched/sch_prio.c

index 8f72cbe0cc557f2c37e2eac00e9ac738724ff732..788db30363ef335cc97e9b650d44516eed371a1d 100644 (file)
@@ -749,6 +749,14 @@ csz_reset(struct Qdisc* sch)
 static void
 csz_destroy(struct Qdisc* sch)
 {
+       struct csz_sched_data *q = (struct csz_sched_data *)sch->data;
+       struct tcf_proto *tp;
+
+       while ((tp = q->filter_list) != NULL) {
+               q->filter_list = tp->next;
+               tp->ops->destroy(tp);
+       }
+
        MOD_DEC_USE_COUNT;
 }
 
index 6c0509d01f2870ebdc758a88157d82bc46289eec..3d864121ffd79d7a749bf1f2131e7818b7438ad1 100644 (file)
@@ -158,6 +158,12 @@ prio_destroy(struct Qdisc* sch)
 {
        int prio;
        struct prio_sched_data *q = (struct prio_sched_data *)sch->data;
+       struct tcf_proto *tp;
+
+       while ((tp = q->filter_list) != NULL) {
+               q->filter_list = tp->next;
+               tp->ops->destroy(tp);
+       }
 
        for (prio=0; prio<q->bands; prio++) {
                qdisc_destroy(q->queues[prio]);