Subject: Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8

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

Enrico Demarin wrote:
> Hi Patrick,
> 
> here it is, hope it will work out this time

Thanks. Could you try whether this patch fixes it please?

diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 66148cc..4c7ffb1 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -1398,7 +1398,7 @@ static int htb_change_class(struct Qdisc *sch, u32 classid,
 		/* create leaf qdisc early because it uses kmalloc(GFP_KERNEL)
 		   so that can't be used inside of sch_tree_lock
 		   -- thanks to Karlis Peisenieks */
-		new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, classid);
+		new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, parent);
 		sch_tree_lock(sch);
 		if (parent && !parent->level) {
 			unsigned int qlen = parent->un.leaf.q->q.qlen;