Subject: Re: [BUG] NULL pointer dereference in skb_dequeue

From: Jarek Poplawski <[email-masked]>
Date: Sun, 10 Aug 2008 00:32:40 +0200

On Sat, Aug 09, 2008 at 12:29:56AM -0700, David Miller wrote:
> From: "Tantilov, Emil S" <[email-masked]>
> Date: Fri, 8 Aug 2008 13:38:32 -0600
> 
> > I ran into similar panic again. This time on driver reload while
> > passing traffic.
> 
> Thanks.  I think I know what's going on here but coming up
> with a fix will take a little bit longer than usual.

I guess you're thinking about something bigger, but here is a little,
maybe unrelated idea, which I think looks reasonable: after changing
the qdiscs, we should care more about pending activities on the "real"
one instead of the noop.

Jarek P.
---

 net/sched/sch_generic.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 7cf83b3..7bce88d 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -658,7 +658,7 @@ static bool some_qdisc_is_running(struct net_device *dev, int lock)
 		int val;
 
 		dev_queue = netdev_get_tx_queue(dev, i);
-		q = dev_queue->qdisc;
+		q = dev_queue->qdisc_sleeping;
 		root_lock = qdisc_lock(q);
 
 		if (lock)