Subject: Re: [PATCH v2] pkt_sched: Change misleading code in class delete.

From: David Miller <[email-masked]>
Date: Sun, 15 Mar 2009 20:00:32 -0700 (PDT)

From: Jarek Poplawski <[email-masked]>
Date: Sun, 15 Mar 2009 13:35:11 +0100

> While looking for a possible reason of bugzilla report on HTB oops:
> http://bugzilla.kernel.org/show_bug.cgi?id=12858
> I found the code in htb_delete calling htb_destroy_class on zero
> refcount is very misleading: it can suggest this is a common path, and
> destroy is called under sch_tree_lock. Actually, this can never happen
> like this because before deletion cops->get() is done, and after
> delete a class is still used by tclass_notify. The class destroy is
> always called from cops->put(), so without sch_tree_lock.
> 
> This doesn't mean much now (since 2.6.27) because all vulnerable calls
> were moved from htb_destroy_class to htb_delete, but there was a bug
> in older kernels. The same change is done for other classful scheds,
> which, it seems, didn't have similar locking problems here.
> 
> Reported-by: m0sia <[email-masked]>
> Signed-off-by: Jarek Poplawski <[email-masked]>

Applied, thanks a lot Jarek.