[LARTC] sch_prio.c and sch_csz.c 2.4.20 patches for correct filter destroying

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Recently I've posted these patches in lkml and netdev mailing lists.
Just repeating them here if someone is interesting: sch_prio.c and
sch_csz.c do not destroy their filter lists, when someone deletes qdisc
from interface without explicit filter deleting. So here is the patches.
:)

--- linux-2.4.20/net/sched/sch_prio.c	Sat Aug  3 04:39:46 2002
+++ linux/net/sched/sch_prio.c	Thu Apr 10 17:52:55 2003
@@ -158,11 +158,19 @@
 {
 	int prio;
 	struct prio_sched_data *q = (struct prio_sched_data *)sch->data;
+	struct tcf_proto *tp;
 
 	for (prio=0; prio<q->bands; prio++) {
 		qdisc_destroy(q->queues[prio]);
 		q->queues[prio] = &noop_qdisc;
 	}
+
+	while((tp = q->filter_list) != NULL)
+	{
+		q->filter_list = tp->next;
+		tp->ops->destroy(tp);
+	}
+
 	MOD_DEC_USE_COUNT;
 }

--- linux-2.4.20/net/sched/sch_csz.c	Fri Dec 21 20:42:06 2001
+++ linux/net/sched/sch_csz.c	Fri Apr 11 12:33:08 2003
@@ -749,6 +749,15 @@
 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 of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux