summaryrefslogtreecommitdiff
path: root/net/sched
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@us.ibm.com>2004-10-27 18:28:24 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-10-27 18:28:24 -0700
commitfa56b76fabdfdff9f8bcb8831ea9e7b4f76eddaf (patch)
tree346688ebceddfc2f2c015367d065f12206aaa48d /net/sched
parent85a8f4f2956d63628482c685b812432421629fa2 (diff)
[PATCH] RCU: use rcu_assign_pointer()
This patch uses the rcu_assign_pointer() API to eliminate a number of explicit memory barriers from code using RCU. This has been tested successfully on i386 and ppc64. Signed-off-by: <paulmck@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'net/sched')
-rw-r--r--net/sched/sch_api.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 127fb296bf92..fee8da1a1c77 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -453,10 +453,9 @@ qdisc_create(struct net_device *dev, u32 handle, struct rtattr **tca, int *errp)
/* enqueue is accessed locklessly - make sure it's visible
* before we set a netdevice's qdisc pointer to sch */
- smp_wmb();
if (!ops->init || (err = ops->init(sch, tca[TCA_OPTIONS-1])) == 0) {
qdisc_lock_tree(dev);
- list_add_tail(&sch->list, &dev->qdisc_list);
+ list_add_tail_rcu(&sch->list, &dev->qdisc_list);
qdisc_unlock_tree(dev);
#ifdef CONFIG_NET_ESTIMATOR