Re: [BUG] NULL pointer dereference in skb_dequeue

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Tantilov, Emil S <emil.s.tantilov@...>
Cc: David Miller <davem@...>, Kirsher, Jeffrey T <jeffrey.t.kirsher@...>, netdev@vger.kernel.org <netdev@...>
Date: Saturday, August 2, 2008 - 9:37 am

Tantilov, Emil S wrote, On 08/02/2008 11:36 AM:

...

I guess this "root lock" has to go back to netdev_queue. Alas, I can't
test this, so if it's not a big problem maybe you could try this patch
before David goes back to this? (His patch should be removed before
using this one.)

Thanks,
Jarek P.

---

 include/linux/netdevice.h |    1 +
 include/net/sch_generic.h |    4 +---
 net/core/dev.c            |    1 +
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index ee583f6..5c32b70 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -447,6 +447,7 @@ struct netdev_queue {
 	struct net_device	*dev;
 	struct Qdisc		*qdisc;
 	unsigned long		state;
+	spinlock_t		queue_lock;
 	spinlock_t		_xmit_lock;
 	int			xmit_lock_owner;
 	struct Qdisc		*qdisc_sleeping;
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index b5f40d7..97ea112 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -195,9 +195,7 @@ static inline struct Qdisc *qdisc_root(struct Qdisc *qdisc)
 
 static inline spinlock_t *qdisc_root_lock(struct Qdisc *qdisc)
 {
-	struct Qdisc *root = qdisc_root(qdisc);
-
-	return qdisc_lock(root);
+	return &qdisc->dev_queue->queue_lock;
 }
 
 static inline struct net_device *qdisc_dev(struct Qdisc *qdisc)
diff --git a/net/core/dev.c b/net/core/dev.c
index 69320a5..73f3a65 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3861,6 +3861,7 @@ static void __netdev_init_queue_locks_one(struct net_device *dev,
 					  struct netdev_queue *dev_queue,
 					  void *_unused)
 {
+	spin_lock_init(&dev_queue->queue_lock);
 	spin_lock_init(&dev_queue->_xmit_lock);
 	netdev_set_xmit_lockdep_class(&dev_queue->_xmit_lock, dev->type);
 	dev_queue->xmit_lock_owner = -1;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[BUG] NULL pointer dereference in skb_dequeue, Jeff Kirsher, (Fri Aug 1, 7:40 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, David Miller, (Fri Aug 1, 9:03 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, David Miller, (Fri Aug 1, 9:20 pm)
RE: [BUG] NULL pointer dereference in skb_dequeue, Tantilov, Emil S, (Sat Aug 2, 5:36 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sat Aug 2, 9:37 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sat Aug 2, 12:27 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, David Miller, (Sat Aug 2, 3:18 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sat Aug 2, 4:19 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sun Aug 3, 5:29 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, David Miller, (Sun Aug 3, 5:56 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sun Aug 3, 6:08 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sun Aug 3, 5:50 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, David Miller, (Sat Aug 2, 3:22 pm)
RE: [BUG] NULL pointer dereference in skb_dequeue, Tantilov, Emil S, (Sat Aug 2, 3:45 pm)
RE: [BUG] NULL pointer dereference in skb_dequeue, Tantilov, Emil S, (Sat Aug 2, 5:46 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, David Miller, (Sat Aug 2, 10:26 pm)
RE: [BUG] NULL pointer dereference in skb_dequeue, Tantilov, Emil S, (Fri Aug 8, 3:38 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, David Miller, (Sat Aug 9, 3:29 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sat Aug 9, 6:32 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Sun Aug 10, 3:04 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Mon Aug 11, 6:01 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Paul E. McKenney, (Mon Aug 11, 7:26 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Tue Aug 12, 2:36 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Paul E. McKenney, (Tue Aug 12, 9:42 am)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Tue Aug 12, 2:09 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Paul E. McKenney, (Tue Aug 12, 4:18 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Jarek Poplawski, (Tue Aug 12, 5:15 pm)
Re: [BUG] NULL pointer dereference in skb_dequeue, Paul E. McKenney, (Tue Aug 12, 6:33 pm)