Subject: Re: [NET_SCHED 06/06]: Fix endless loops (part 4): HTB

From: Patrick McHardy <[email-masked]>
Date: Thu, 23 Nov 2006 10:07:32 +0100

Jarek Poplawski wrote:
> On Thu, Nov 23, 2006 at 09:44:04AM +0100, Patrick McHardy wrote:
> 
>>Jarek Poplawski wrote:
>>
>>>>+static void htb_qlen_notify(struct Qdisc *sch, unsigned long arg)
>>>>+{
>>>>+	struct htb_class *cl = (struct htb_class *)arg;
>>>>+
>>>>+	if (cl->un.leaf.q->q.qlen == 0)
>>>
>>>
>>>Probably "if (cl->prio_activity)" is needed here.
>>
>>
>>No, the function is only called for active leaf classes, which
>>always have prio_activity != 0.
> 
> 
> So this was unnecessary in htb_graft? You should know better...

In htb_graft it was necessary because the class could be
either active (qlen > 0) or inactive (qlen == 0). But since
qdisc_tree_decrease_qlen does nothing in case of a decrease
of zero the callback is only called for active classes and
the check becomes unnecessary.