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
@@ -480,7 +480,7 @@ int __init_or_module phonet_proto_register(unsigned int protocol,
|
||||
if (proto_tab[protocol])
|
||||
err = -EBUSY;
|
||||
else
|
||||
rcu_assign_pointer(proto_tab[protocol], pp);
|
||||
RCU_INIT_POINTER(proto_tab[protocol], pp);
|
||||
mutex_unlock(&proto_tab_lock);
|
||||
|
||||
return err;
|
||||
@@ -491,7 +491,7 @@ void phonet_proto_unregister(unsigned int protocol, struct phonet_protocol *pp)
|
||||
{
|
||||
mutex_lock(&proto_tab_lock);
|
||||
BUG_ON(proto_tab[protocol] != pp);
|
||||
rcu_assign_pointer(proto_tab[protocol], NULL);
|
||||
RCU_INIT_POINTER(proto_tab[protocol], NULL);
|
||||
mutex_unlock(&proto_tab_lock);
|
||||
synchronize_rcu();
|
||||
proto_unregister(pp->prot);
|
||||
|
@@ -276,7 +276,7 @@ static void phonet_route_autodel(struct net_device *dev)
|
||||
mutex_lock(&pnn->routes.lock);
|
||||
for (i = 0; i < 64; i++)
|
||||
if (dev == pnn->routes.table[i]) {
|
||||
rcu_assign_pointer(pnn->routes.table[i], NULL);
|
||||
RCU_INIT_POINTER(pnn->routes.table[i], NULL);
|
||||
set_bit(i, deleted);
|
||||
}
|
||||
mutex_unlock(&pnn->routes.lock);
|
||||
@@ -390,7 +390,7 @@ int phonet_route_add(struct net_device *dev, u8 daddr)
|
||||
daddr = daddr >> 2;
|
||||
mutex_lock(&routes->lock);
|
||||
if (routes->table[daddr] == NULL) {
|
||||
rcu_assign_pointer(routes->table[daddr], dev);
|
||||
RCU_INIT_POINTER(routes->table[daddr], dev);
|
||||
dev_hold(dev);
|
||||
err = 0;
|
||||
}
|
||||
@@ -406,7 +406,7 @@ int phonet_route_del(struct net_device *dev, u8 daddr)
|
||||
daddr = daddr >> 2;
|
||||
mutex_lock(&routes->lock);
|
||||
if (dev == routes->table[daddr])
|
||||
rcu_assign_pointer(routes->table[daddr], NULL);
|
||||
RCU_INIT_POINTER(routes->table[daddr], NULL);
|
||||
else
|
||||
dev = NULL;
|
||||
mutex_unlock(&routes->lock);
|
||||
|
@@ -679,7 +679,7 @@ int pn_sock_bind_res(struct sock *sk, u8 res)
|
||||
mutex_lock(&resource_mutex);
|
||||
if (pnres.sk[res] == NULL) {
|
||||
sock_hold(sk);
|
||||
rcu_assign_pointer(pnres.sk[res], sk);
|
||||
RCU_INIT_POINTER(pnres.sk[res], sk);
|
||||
ret = 0;
|
||||
}
|
||||
mutex_unlock(&resource_mutex);
|
||||
@@ -695,7 +695,7 @@ int pn_sock_unbind_res(struct sock *sk, u8 res)
|
||||
|
||||
mutex_lock(&resource_mutex);
|
||||
if (pnres.sk[res] == sk) {
|
||||
rcu_assign_pointer(pnres.sk[res], NULL);
|
||||
RCU_INIT_POINTER(pnres.sk[res], NULL);
|
||||
ret = 0;
|
||||
}
|
||||
mutex_unlock(&resource_mutex);
|
||||
@@ -714,7 +714,7 @@ void pn_sock_unbind_all_res(struct sock *sk)
|
||||
mutex_lock(&resource_mutex);
|
||||
for (res = 0; res < 256; res++) {
|
||||
if (pnres.sk[res] == sk) {
|
||||
rcu_assign_pointer(pnres.sk[res], NULL);
|
||||
RCU_INIT_POINTER(pnres.sk[res], NULL);
|
||||
match++;
|
||||
}
|
||||
}
|
||||
|
Посилання в новій задачі
Заблокувати користувача