Subject: Re: Strange Panic (Deadlock)

From: Jarek Poplawski <[email-masked]>
Date: Wed, 26 Dec 2007 19:58:22 +0100

On Wed, Dec 26, 2007 at 07:56:42PM +0100, Jarek Poplawski wrote:
...

[PATCH 3/3] (for testing only)
---

diff -Nurp linux-2.6.23.12-/net/sched/sch_api.c linux-2.6.23.12+/net/sched/sch_api.c
--- linux-2.6.23.12-/net/sched/sch_api.c	2007-12-21 22:26:15.000000000 +0100
+++ linux-2.6.23.12+/net/sched/sch_api.c	2007-12-26 13:35:46.000000000 +0100
@@ -514,8 +514,11 @@ qdisc_create(struct net_device *dev, u32
 				 * a ops->reset() here? The qdisc was never
 				 * in action so it shouldn't be necessary.
 				 */
-				if (ops->destroy)
+				if (ops->destroy) {
+					qdisc_lock_tree(dev);
 					ops->destroy(sch);
+					qdisc_unlock_tree(dev);
+				}
 				goto err_out3;
 			}
 		}