kernel-ark/net/sched
Jarek Poplawski 066a3b5b23 [NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
TC_H_MAJ(parentid) for root classes is the same as for ingress, and if
ingress qdisc is created qdisc_lookup() returns its pointer (without
ingress NULL is returned). After this all qdisc_lookups give the same,
and we get endless loop. (I don't know how this could hide for so long
- it should trigger with every leaf class deleted if it's qdisc isn't
empty.)

After this fix qdisc_lookup() is omitted both for ingress and root
parents, but looking for root is only wasting a little time here...
Many thanks to Enrico Demarin for finding a test for catching this
bug, which probably bothered quite a lot of admins.
 
Reported-by: Enrico Demarin <enrico@superclick.com>,
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-14 15:10:42 -07:00
..
act_api.c
act_gact.c [NET_SCHED]: Use nla_policy for attribute validation in actions 2008-01-28 15:11:23 -08:00
act_ipt.c [NET_SCHED]: Use nla_policy for attribute validation in actions 2008-01-28 15:11:23 -08:00
act_mirred.c [NET_SCHED]: Use nla_policy for attribute validation in actions 2008-01-28 15:11:23 -08:00
act_nat.c [NET_SCHED]: Use nla_policy for attribute validation in actions 2008-01-28 15:11:23 -08:00
act_pedit.c [NET_SCHED]: Use nla_policy for attribute validation in actions 2008-01-28 15:11:23 -08:00
act_police.c [NET_SCHED]: Use nla_policy for attribute validation in actions 2008-01-28 15:11:23 -08:00
act_simple.c [NET_SCHED]: Use nla_policy for attribute validation in actions 2008-01-28 15:11:23 -08:00
cls_api.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_basic.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_flow.c [NET_SCHED]: cls_flow: support classification based on VLAN tag 2008-02-05 16:21:04 -08:00
cls_fw.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_route.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_rsvp6.c
cls_rsvp.c
cls_rsvp.h
cls_tcindex.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_u32.c [NET_SCHED] cls_u32: refcounting fix for u32_delete() 2008-04-12 18:37:13 -07:00
em_cmp.c
em_meta.c [PKT_SCHED]: deinline functions in meta match 2008-02-09 23:26:17 -08:00
em_nbyte.c
em_text.c
em_u32.c [PKT_SCHED]: annotate cls_u32 2008-03-17 22:46:46 -07:00
ematch.c [PKT_SCHED] ematch: Fix build warning. 2008-02-10 03:48:15 -08:00
Kconfig [NET_SCHED]: Add flow classifier 2008-01-31 19:28:36 -08:00
Makefile [NET_SCHED]: Add flow classifier 2008-01-31 19:28:36 -08:00
sch_api.c [NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop 2008-04-14 15:10:42 -07:00
sch_atm.c
sch_blackhole.c
sch_cbq.c
sch_dsmark.c
sch_fifo.c
sch_generic.c [NET]: Add preemption point in qdisc_run 2008-03-28 16:25:26 -07:00
sch_gred.c
sch_hfsc.c
sch_htb.c sch_htb: fix "too many events" situation 2008-03-23 22:00:38 -07:00
sch_ingress.c [NET_SCHED]: sch_ingress: remove netfilter support 2008-01-31 19:28:25 -08:00
sch_netem.c
sch_prio.c
sch_red.c
sch_sfq.c [NET_SCHED]: sch_sfq: make internal queues visible as classes 2008-01-31 19:28:35 -08:00
sch_tbf.c
sch_teql.c [PKT_SCHED] sch_teql.c: Duplicate IFF_BROADCAST in FMASK, remove 2nd. 2008-01-31 19:28:29 -08:00