From fa56b76fabdfdff9f8bcb8831ea9e7b4f76eddaf Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Wed, 27 Oct 2004 18:28:24 -0700 Subject: [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: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- net/decnet/dn_route.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'net/decnet') diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c index 34f0b81e1784..32e3cd4bc3b9 100644 --- a/net/decnet/dn_route.c +++ b/net/decnet/dn_route.c @@ -287,10 +287,9 @@ static int dn_insert_route(struct dn_route *rt, unsigned hash, struct dn_route * if (compare_keys(&rth->fl, &rt->fl)) { /* Put it first */ *rthp = rth->u.rt_next; - smp_wmb(); - rth->u.rt_next = dn_rt_hash_table[hash].chain; - smp_wmb(); - dn_rt_hash_table[hash].chain = rth; + rcu_assign_pointer(rth->u.rt_next, + dn_rt_hash_table[hash].chain); + rcu_assign_pointer(dn_rt_hash_table[hash].chain, rth); rth->u.dst.__use++; dst_hold(&rth->u.dst); @@ -304,10 +303,8 @@ static int dn_insert_route(struct dn_route *rt, unsigned hash, struct dn_route * rthp = &rth->u.rt_next; } - smp_wmb(); - rt->u.rt_next = dn_rt_hash_table[hash].chain; - smp_wmb(); - dn_rt_hash_table[hash].chain = rt; + rcu_assign_pointer(rt->u.rt_next, dn_rt_hash_table[hash].chain); + rcu_assign_pointer(dn_rt_hash_table[hash].chain, rt); dst_hold(&rt->u.dst); rt->u.dst.__use++; -- cgit v1.3