pkt_sched: Fix oops in htb_delete.
authorJarek Poplawski <jarkao2@gmail.com>
Wed, 13 Aug 2008 22:16:43 +0000 (15:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 Aug 2008 22:16:43 +0000 (15:16 -0700)
Recent changes introduced a bug in htb_delete(): cl->parent->children
counter update misses checking cl->parent for NULL, which is used for
root classes, so deleting them causes an oops.

Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_htb.c

index be35422..6febd24 100644 (file)
@@ -1279,7 +1279,8 @@ static int htb_delete(struct Qdisc *sch, unsigned long arg)
 
        /* delete from hash and active; remainder in destroy_class */
        qdisc_class_hash_remove(&q->clhash, &cl->common);
-       cl->parent->children--;
+       if (cl->parent)
+               cl->parent->children--;
 
        if (cl->prio_activity)
                htb_deactivate(q, cl);