Subject: Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop

From: Patrick McHardy <[email-masked]>
Date: Mon, 14 Apr 2008 22:28:52 +0200

Jarek Poplawski wrote:
> [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.
>   

Good catch, I agree that this is the reason for sure.