[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20080718.230101.193691931.davem@davemloft.net>
Date: Fri, 18 Jul 2008 23:01:01 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: shemminger@...tta.com
Cc: netdev@...r.kernel.org
Subject: Re: net-next: unitialized lock
From: Stephen Hemminger <shemminger@...tta.com>
Date: Fri, 18 Jul 2008 20:19:45 -0700
> Looks like locks on qdisc aren't initialized properly after
> Dave's conversion to MQ.
>
> # brctl addbr br0
> # ifconfig br0 10.1.1.1
> # ifconfig br0 down
The noqueue_qdisc is missing some initialization, the following
should fix it.
pkt_sched: Fix noqueue_qdisc initialization.
Like noop_qdisc, it needs a dummy backpointer and
explicit qdisc->q.lock initialization.
Based upon a report by Stephen Hemminger.
Signed-off-by: David S. Miller <davem@...emloft.net>
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 14cc443..522a41a 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -340,12 +340,19 @@ static struct Qdisc_ops noqueue_qdisc_ops __read_mostly = {
.owner = THIS_MODULE,
};
+static struct Qdisc noqueue_qdisc;
+static struct netdev_queue noqueue_netdev_queue = {
+ .qdisc = &noqueue_qdisc,
+};
+
static struct Qdisc noqueue_qdisc = {
.enqueue = NULL,
.dequeue = noop_dequeue,
.flags = TCQ_F_BUILTIN,
.ops = &noqueue_qdisc_ops,
.list = LIST_HEAD_INIT(noqueue_qdisc.list),
+ .q.lock = __SPIN_LOCK_UNLOCKED(noqueue_qdisc.q.lock),
+ .dev_queue = &noqueue_netdev_queue,
};
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists