rcu: convert uses of rcu_assign_pointer(x, NULL) to RCU_INIT_POINTER
When assigning a NULL value to an RCU protected pointer, no barrier is needed. The rcu_assign_pointer, used to handle that but will soon change to not handle the special case. Convert all rcu_assign_pointer of NULL value. //smpl @@ expression P; @@ - rcu_assign_pointer(P, NULL) + RCU_INIT_POINTER(P, NULL) // </smpl> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Этот коммит содержится в:

коммит произвёл
David S. Miller

родитель
76f793e3a4
Коммит
a9b3cd7f32
@@ -218,8 +218,8 @@ ip6_tnl_link(struct ip6_tnl_net *ip6n, struct ip6_tnl *t)
|
||||
{
|
||||
struct ip6_tnl __rcu **tp = ip6_tnl_bucket(ip6n, &t->parms);
|
||||
|
||||
rcu_assign_pointer(t->next , rtnl_dereference(*tp));
|
||||
rcu_assign_pointer(*tp, t);
|
||||
RCU_INIT_POINTER(t->next , rtnl_dereference(*tp));
|
||||
RCU_INIT_POINTER(*tp, t);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -237,7 +237,7 @@ ip6_tnl_unlink(struct ip6_tnl_net *ip6n, struct ip6_tnl *t)
|
||||
(iter = rtnl_dereference(*tp)) != NULL;
|
||||
tp = &iter->next) {
|
||||
if (t == iter) {
|
||||
rcu_assign_pointer(*tp, t->next);
|
||||
RCU_INIT_POINTER(*tp, t->next);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -350,7 +350,7 @@ ip6_tnl_dev_uninit(struct net_device *dev)
|
||||
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
|
||||
|
||||
if (dev == ip6n->fb_tnl_dev)
|
||||
rcu_assign_pointer(ip6n->tnls_wc[0], NULL);
|
||||
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
|
||||
else
|
||||
ip6_tnl_unlink(ip6n, t);
|
||||
ip6_tnl_dst_reset(t);
|
||||
@@ -1440,7 +1440,7 @@ static int __net_init ip6_fb_tnl_dev_init(struct net_device *dev)
|
||||
|
||||
t->parms.proto = IPPROTO_IPV6;
|
||||
dev_hold(dev);
|
||||
rcu_assign_pointer(ip6n->tnls_wc[0], t);
|
||||
RCU_INIT_POINTER(ip6n->tnls_wc[0], t);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Ссылка в новой задаче
Block a user