

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/net/sched/sch_generic.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff -puN net/sched/sch_generic.c~sch_generic-rcu-fix net/sched/sch_generic.c
--- 25/net/sched/sch_generic.c~sch_generic-rcu-fix	2004-06-23 12:36:37.433894792 -0700
+++ 25-akpm/net/sched/sch_generic.c	2004-06-23 12:36:37.436894336 -0700
@@ -411,9 +411,9 @@ void qdisc_reset(struct Qdisc *qdisc)
 /* this is the rcu callback function to clean up a qdisc when there 
  * are no further references to it */
 
-static void __qdisc_destroy (void * arg) 
+static void __qdisc_destroy(struct rcu_head *head)
 {
-	struct Qdisc    *qdisc = (struct Qdisc *) arg;
+	struct Qdisc *qdisc = container_of(head, struct Qdisc, q_rcu);
 	struct Qdisc_ops  *ops = qdisc->ops;
 
 #ifdef CONFIG_NET_ESTIMATOR
@@ -448,7 +448,7 @@ void qdisc_destroy(struct Qdisc *qdisc)
 		}
 	}
 
-	call_rcu(&qdisc->q_rcu, __qdisc_destroy, qdisc);
+	call_rcu(&qdisc->q_rcu, __qdisc_destroy);
 
 }
 
_
