forked from mirrors/linux
		
	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>
This commit is contained in:
		
							parent
							
								
									76f793e3a4
								
							
						
					
					
						commit
						a9b3cd7f32
					
				
					 55 changed files with 193 additions and 193 deletions
				
			
		|  | @ -553,7 +553,7 @@ static void garp_release_port(struct net_device *dev) | ||||||
| 		if (rtnl_dereference(port->applicants[i])) | 		if (rtnl_dereference(port->applicants[i])) | ||||||
| 			return; | 			return; | ||||||
| 	} | 	} | ||||||
| 	rcu_assign_pointer(dev->garp_port, NULL); | 	RCU_INIT_POINTER(dev->garp_port, NULL); | ||||||
| 	kfree_rcu(port, rcu); | 	kfree_rcu(port, rcu); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -605,7 +605,7 @@ void garp_uninit_applicant(struct net_device *dev, struct garp_application *appl | ||||||
| 
 | 
 | ||||||
| 	ASSERT_RTNL(); | 	ASSERT_RTNL(); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(port->applicants[appl->type], NULL); | 	RCU_INIT_POINTER(port->applicants[appl->type], NULL); | ||||||
| 
 | 
 | ||||||
| 	/* Delete timer and generate a final TRANSMIT_PDU event to flush out
 | 	/* Delete timer and generate a final TRANSMIT_PDU event to flush out
 | ||||||
| 	 * all pending messages before the applicant is gone. */ | 	 * all pending messages before the applicant is gone. */ | ||||||
|  |  | ||||||
|  | @ -88,9 +88,9 @@ void stp_proto_unregister(const struct stp_proto *proto) | ||||||
| { | { | ||||||
| 	mutex_lock(&stp_proto_mutex); | 	mutex_lock(&stp_proto_mutex); | ||||||
| 	if (is_zero_ether_addr(proto->group_address)) | 	if (is_zero_ether_addr(proto->group_address)) | ||||||
| 		rcu_assign_pointer(stp_proto, NULL); | 		RCU_INIT_POINTER(stp_proto, NULL); | ||||||
| 	else | 	else | ||||||
| 		rcu_assign_pointer(garp_protos[proto->group_address[5] - | 		RCU_INIT_POINTER(garp_protos[proto->group_address[5] - | ||||||
| 					       GARP_ADDR_MIN], NULL); | 					       GARP_ADDR_MIN], NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -133,7 +133,7 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head) | ||||||
| 	if (grp->nr_vlans == 0) { | 	if (grp->nr_vlans == 0) { | ||||||
| 		vlan_gvrp_uninit_applicant(real_dev); | 		vlan_gvrp_uninit_applicant(real_dev); | ||||||
| 
 | 
 | ||||||
| 		rcu_assign_pointer(real_dev->vlgrp, NULL); | 		RCU_INIT_POINTER(real_dev->vlgrp, NULL); | ||||||
| 
 | 
 | ||||||
| 		/* Free the group, after all cpu's are done. */ | 		/* Free the group, after all cpu's are done. */ | ||||||
| 		call_rcu(&grp->rcu, vlan_rcu_free); | 		call_rcu(&grp->rcu, vlan_rcu_free); | ||||||
|  |  | ||||||
|  | @ -87,14 +87,14 @@ static int __init ebtable_broute_init(void) | ||||||
| 	if (ret < 0) | 	if (ret < 0) | ||||||
| 		return ret; | 		return ret; | ||||||
| 	/* see br_input.c */ | 	/* see br_input.c */ | ||||||
| 	rcu_assign_pointer(br_should_route_hook, | 	RCU_INIT_POINTER(br_should_route_hook, | ||||||
| 			   (br_should_route_hook_t *)ebt_broute); | 			   (br_should_route_hook_t *)ebt_broute); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void __exit ebtable_broute_fini(void) | static void __exit ebtable_broute_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(br_should_route_hook, NULL); | 	RCU_INIT_POINTER(br_should_route_hook, NULL); | ||||||
| 	synchronize_net(); | 	synchronize_net(); | ||||||
| 	unregister_pernet_subsys(&broute_net_ops); | 	unregister_pernet_subsys(&broute_net_ops); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -108,7 +108,7 @@ struct cflayer *cfmuxl_remove_dnlayer(struct cflayer *layr, u8 phyid) | ||||||
| 	int idx = phyid % DN_CACHE_SIZE; | 	int idx = phyid % DN_CACHE_SIZE; | ||||||
| 
 | 
 | ||||||
| 	spin_lock_bh(&muxl->transmit_lock); | 	spin_lock_bh(&muxl->transmit_lock); | ||||||
| 	rcu_assign_pointer(muxl->dn_cache[idx], NULL); | 	RCU_INIT_POINTER(muxl->dn_cache[idx], NULL); | ||||||
| 	dn = get_from_id(&muxl->frml_list, phyid); | 	dn = get_from_id(&muxl->frml_list, phyid); | ||||||
| 	if (dn == NULL) | 	if (dn == NULL) | ||||||
| 		goto out; | 		goto out; | ||||||
|  | @ -164,7 +164,7 @@ struct cflayer *cfmuxl_remove_uplayer(struct cflayer *layr, u8 id) | ||||||
| 	if (up == NULL) | 	if (up == NULL) | ||||||
| 		goto out; | 		goto out; | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(muxl->up_cache[idx], NULL); | 	RCU_INIT_POINTER(muxl->up_cache[idx], NULL); | ||||||
| 	list_del_rcu(&up->node); | 	list_del_rcu(&up->node); | ||||||
| out: | out: | ||||||
| 	spin_unlock_bh(&muxl->receive_lock); | 	spin_unlock_bh(&muxl->receive_lock); | ||||||
|  | @ -261,7 +261,7 @@ static void cfmuxl_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl, | ||||||
| 
 | 
 | ||||||
| 				idx = layer->id % UP_CACHE_SIZE; | 				idx = layer->id % UP_CACHE_SIZE; | ||||||
| 				spin_lock_bh(&muxl->receive_lock); | 				spin_lock_bh(&muxl->receive_lock); | ||||||
| 				rcu_assign_pointer(muxl->up_cache[idx], NULL); | 				RCU_INIT_POINTER(muxl->up_cache[idx], NULL); | ||||||
| 				list_del_rcu(&layer->node); | 				list_del_rcu(&layer->node); | ||||||
| 				spin_unlock_bh(&muxl->receive_lock); | 				spin_unlock_bh(&muxl->receive_lock); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -719,7 +719,7 @@ int can_proto_register(const struct can_proto *cp) | ||||||
| 		       proto); | 		       proto); | ||||||
| 		err = -EBUSY; | 		err = -EBUSY; | ||||||
| 	} else | 	} else | ||||||
| 		rcu_assign_pointer(proto_tab[proto], cp); | 		RCU_INIT_POINTER(proto_tab[proto], cp); | ||||||
| 
 | 
 | ||||||
| 	mutex_unlock(&proto_tab_lock); | 	mutex_unlock(&proto_tab_lock); | ||||||
| 
 | 
 | ||||||
|  | @ -740,7 +740,7 @@ void can_proto_unregister(const struct can_proto *cp) | ||||||
| 
 | 
 | ||||||
| 	mutex_lock(&proto_tab_lock); | 	mutex_lock(&proto_tab_lock); | ||||||
| 	BUG_ON(proto_tab[proto] != cp); | 	BUG_ON(proto_tab[proto] != cp); | ||||||
| 	rcu_assign_pointer(proto_tab[proto], NULL); | 	RCU_INIT_POINTER(proto_tab[proto], NULL); | ||||||
| 	mutex_unlock(&proto_tab_lock); | 	mutex_unlock(&proto_tab_lock); | ||||||
| 
 | 
 | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
|  |  | ||||||
|  | @ -3094,8 +3094,8 @@ void netdev_rx_handler_unregister(struct net_device *dev) | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
| 	ASSERT_RTNL(); | 	ASSERT_RTNL(); | ||||||
| 	rcu_assign_pointer(dev->rx_handler, NULL); | 	RCU_INIT_POINTER(dev->rx_handler, NULL); | ||||||
| 	rcu_assign_pointer(dev->rx_handler_data, NULL); | 	RCU_INIT_POINTER(dev->rx_handler_data, NULL); | ||||||
| } | } | ||||||
| EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister); | EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -487,7 +487,7 @@ static int fib_nl_delrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg) | ||||||
| 		if (ops->nr_goto_rules > 0) { | 		if (ops->nr_goto_rules > 0) { | ||||||
| 			list_for_each_entry(tmp, &ops->rules_list, list) { | 			list_for_each_entry(tmp, &ops->rules_list, list) { | ||||||
| 				if (rtnl_dereference(tmp->ctarget) == rule) { | 				if (rtnl_dereference(tmp->ctarget) == rule) { | ||||||
| 					rcu_assign_pointer(tmp->ctarget, NULL); | 					RCU_INIT_POINTER(tmp->ctarget, NULL); | ||||||
| 					ops->unresolved_rules++; | 					ops->unresolved_rules++; | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -645,7 +645,7 @@ int sk_detach_filter(struct sock *sk) | ||||||
| 	filter = rcu_dereference_protected(sk->sk_filter, | 	filter = rcu_dereference_protected(sk->sk_filter, | ||||||
| 					   sock_owned_by_user(sk)); | 					   sock_owned_by_user(sk)); | ||||||
| 	if (filter) { | 	if (filter) { | ||||||
| 		rcu_assign_pointer(sk->sk_filter, NULL); | 		RCU_INIT_POINTER(sk->sk_filter, NULL); | ||||||
| 		sk_filter_uncharge(sk, filter); | 		sk_filter_uncharge(sk, filter); | ||||||
| 		ret = 0; | 		ret = 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -987,10 +987,10 @@ static ssize_t store_xps_map(struct netdev_queue *queue, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (nonempty) | 	if (nonempty) | ||||||
| 		rcu_assign_pointer(dev->xps_maps, new_dev_maps); | 		RCU_INIT_POINTER(dev->xps_maps, new_dev_maps); | ||||||
| 	else { | 	else { | ||||||
| 		kfree(new_dev_maps); | 		kfree(new_dev_maps); | ||||||
| 		rcu_assign_pointer(dev->xps_maps, NULL); | 		RCU_INIT_POINTER(dev->xps_maps, NULL); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (dev_maps) | 	if (dev_maps) | ||||||
|  |  | ||||||
|  | @ -760,7 +760,7 @@ int __netpoll_setup(struct netpoll *np) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* last thing to do is link it to the net device structure */ | 	/* last thing to do is link it to the net device structure */ | ||||||
| 	rcu_assign_pointer(ndev->npinfo, npinfo); | 	RCU_INIT_POINTER(ndev->npinfo, npinfo); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 | 
 | ||||||
|  | @ -901,7 +901,7 @@ void __netpoll_cleanup(struct netpoll *np) | ||||||
| 		if (ops->ndo_netpoll_cleanup) | 		if (ops->ndo_netpoll_cleanup) | ||||||
| 			ops->ndo_netpoll_cleanup(np->dev); | 			ops->ndo_netpoll_cleanup(np->dev); | ||||||
| 
 | 
 | ||||||
| 		rcu_assign_pointer(np->dev->npinfo, NULL); | 		RCU_INIT_POINTER(np->dev->npinfo, NULL); | ||||||
| 
 | 
 | ||||||
| 		/* avoid racing with NAPI reading npinfo */ | 		/* avoid racing with NAPI reading npinfo */ | ||||||
| 		synchronize_rcu_bh(); | 		synchronize_rcu_bh(); | ||||||
|  |  | ||||||
|  | @ -387,7 +387,7 @@ struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie) | ||||||
| 
 | 
 | ||||||
| 	if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) { | 	if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) { | ||||||
| 		sk_tx_queue_clear(sk); | 		sk_tx_queue_clear(sk); | ||||||
| 		rcu_assign_pointer(sk->sk_dst_cache, NULL); | 		RCU_INIT_POINTER(sk->sk_dst_cache, NULL); | ||||||
| 		dst_release(dst); | 		dst_release(dst); | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	} | 	} | ||||||
|  | @ -1158,7 +1158,7 @@ static void __sk_free(struct sock *sk) | ||||||
| 				       atomic_read(&sk->sk_wmem_alloc) == 0); | 				       atomic_read(&sk->sk_wmem_alloc) == 0); | ||||||
| 	if (filter) { | 	if (filter) { | ||||||
| 		sk_filter_uncharge(sk, filter); | 		sk_filter_uncharge(sk, filter); | ||||||
| 		rcu_assign_pointer(sk->sk_filter, NULL); | 		RCU_INIT_POINTER(sk->sk_filter, NULL); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	sock_disable_timestamp(sk, SOCK_TIMESTAMP); | 	sock_disable_timestamp(sk, SOCK_TIMESTAMP); | ||||||
|  |  | ||||||
|  | @ -388,7 +388,7 @@ static int dn_dev_insert_ifa(struct dn_dev *dn_db, struct dn_ifaddr *ifa) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ifa->ifa_next = dn_db->ifa_list; | 	ifa->ifa_next = dn_db->ifa_list; | ||||||
| 	rcu_assign_pointer(dn_db->ifa_list, ifa); | 	RCU_INIT_POINTER(dn_db->ifa_list, ifa); | ||||||
| 
 | 
 | ||||||
| 	dn_ifaddr_notify(RTM_NEWADDR, ifa); | 	dn_ifaddr_notify(RTM_NEWADDR, ifa); | ||||||
| 	blocking_notifier_call_chain(&dnaddr_chain, NETDEV_UP, ifa); | 	blocking_notifier_call_chain(&dnaddr_chain, NETDEV_UP, ifa); | ||||||
|  | @ -1093,7 +1093,7 @@ static struct dn_dev *dn_dev_create(struct net_device *dev, int *err) | ||||||
| 
 | 
 | ||||||
| 	memcpy(&dn_db->parms, p, sizeof(struct dn_dev_parms)); | 	memcpy(&dn_db->parms, p, sizeof(struct dn_dev_parms)); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(dev->dn_ptr, dn_db); | 	RCU_INIT_POINTER(dev->dn_ptr, dn_db); | ||||||
| 	dn_db->dev = dev; | 	dn_db->dev = dev; | ||||||
| 	init_timer(&dn_db->timer); | 	init_timer(&dn_db->timer); | ||||||
| 
 | 
 | ||||||
|  | @ -1101,7 +1101,7 @@ static struct dn_dev *dn_dev_create(struct net_device *dev, int *err) | ||||||
| 
 | 
 | ||||||
| 	dn_db->neigh_parms = neigh_parms_alloc(dev, &dn_neigh_table); | 	dn_db->neigh_parms = neigh_parms_alloc(dev, &dn_neigh_table); | ||||||
| 	if (!dn_db->neigh_parms) { | 	if (!dn_db->neigh_parms) { | ||||||
| 		rcu_assign_pointer(dev->dn_ptr, NULL); | 		RCU_INIT_POINTER(dev->dn_ptr, NULL); | ||||||
| 		kfree(dn_db); | 		kfree(dn_db); | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -258,7 +258,7 @@ static struct in_device *inetdev_init(struct net_device *dev) | ||||||
| 		ip_mc_up(in_dev); | 		ip_mc_up(in_dev); | ||||||
| 
 | 
 | ||||||
| 	/* we can receive as soon as ip_ptr is set -- do this last */ | 	/* we can receive as soon as ip_ptr is set -- do this last */ | ||||||
| 	rcu_assign_pointer(dev->ip_ptr, in_dev); | 	RCU_INIT_POINTER(dev->ip_ptr, in_dev); | ||||||
| out: | out: | ||||||
| 	return in_dev; | 	return in_dev; | ||||||
| out_kfree: | out_kfree: | ||||||
|  | @ -291,7 +291,7 @@ static void inetdev_destroy(struct in_device *in_dev) | ||||||
| 		inet_free_ifa(ifa); | 		inet_free_ifa(ifa); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(dev->ip_ptr, NULL); | 	RCU_INIT_POINTER(dev->ip_ptr, NULL); | ||||||
| 
 | 
 | ||||||
| 	devinet_sysctl_unregister(in_dev); | 	devinet_sysctl_unregister(in_dev); | ||||||
| 	neigh_parms_release(&arp_tbl, in_dev->arp_parms); | 	neigh_parms_release(&arp_tbl, in_dev->arp_parms); | ||||||
|  | @ -1175,7 +1175,7 @@ static int inetdev_event(struct notifier_block *this, unsigned long event, | ||||||
| 	switch (event) { | 	switch (event) { | ||||||
| 	case NETDEV_REGISTER: | 	case NETDEV_REGISTER: | ||||||
| 		printk(KERN_DEBUG "inetdev_event: bug\n"); | 		printk(KERN_DEBUG "inetdev_event: bug\n"); | ||||||
| 		rcu_assign_pointer(dev->ip_ptr, NULL); | 		RCU_INIT_POINTER(dev->ip_ptr, NULL); | ||||||
| 		break; | 		break; | ||||||
| 	case NETDEV_UP: | 	case NETDEV_UP: | ||||||
| 		if (!inetdev_valid_mtu(dev->mtu)) | 		if (!inetdev_valid_mtu(dev->mtu)) | ||||||
|  |  | ||||||
|  | @ -204,7 +204,7 @@ static inline struct tnode *node_parent_rcu(const struct rt_trie_node *node) | ||||||
| 	return (struct tnode *)(parent & ~NODE_TYPE_MASK); | 	return (struct tnode *)(parent & ~NODE_TYPE_MASK); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Same as rcu_assign_pointer
 | /* Same as RCU_INIT_POINTER
 | ||||||
|  * but that macro() assumes that value is a pointer. |  * but that macro() assumes that value is a pointer. | ||||||
|  */ |  */ | ||||||
| static inline void node_set_parent(struct rt_trie_node *node, struct tnode *ptr) | static inline void node_set_parent(struct rt_trie_node *node, struct tnode *ptr) | ||||||
|  | @ -528,7 +528,7 @@ static void tnode_put_child_reorg(struct tnode *tn, int i, struct rt_trie_node * | ||||||
| 	if (n) | 	if (n) | ||||||
| 		node_set_parent(n, tn); | 		node_set_parent(n, tn); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(tn->child[i], n); | 	RCU_INIT_POINTER(tn->child[i], n); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define MAX_WORK 10 | #define MAX_WORK 10 | ||||||
|  | @ -1014,7 +1014,7 @@ static void trie_rebalance(struct trie *t, struct tnode *tn) | ||||||
| 
 | 
 | ||||||
| 		tp = node_parent((struct rt_trie_node *) tn); | 		tp = node_parent((struct rt_trie_node *) tn); | ||||||
| 		if (!tp) | 		if (!tp) | ||||||
| 			rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn); | 			RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn); | ||||||
| 
 | 
 | ||||||
| 		tnode_free_flush(); | 		tnode_free_flush(); | ||||||
| 		if (!tp) | 		if (!tp) | ||||||
|  | @ -1026,7 +1026,7 @@ static void trie_rebalance(struct trie *t, struct tnode *tn) | ||||||
| 	if (IS_TNODE(tn)) | 	if (IS_TNODE(tn)) | ||||||
| 		tn = (struct tnode *)resize(t, (struct tnode *)tn); | 		tn = (struct tnode *)resize(t, (struct tnode *)tn); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn); | 	RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn); | ||||||
| 	tnode_free_flush(); | 	tnode_free_flush(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1163,7 +1163,7 @@ static struct list_head *fib_insert_node(struct trie *t, u32 key, int plen) | ||||||
| 			put_child(t, (struct tnode *)tp, cindex, | 			put_child(t, (struct tnode *)tp, cindex, | ||||||
| 				  (struct rt_trie_node *)tn); | 				  (struct rt_trie_node *)tn); | ||||||
| 		} else { | 		} else { | ||||||
| 			rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn); | 			RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn); | ||||||
| 			tp = tn; | 			tp = tn; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | @ -1621,7 +1621,7 @@ static void trie_leaf_remove(struct trie *t, struct leaf *l) | ||||||
| 		put_child(t, (struct tnode *)tp, cindex, NULL); | 		put_child(t, (struct tnode *)tp, cindex, NULL); | ||||||
| 		trie_rebalance(t, tp); | 		trie_rebalance(t, tp); | ||||||
| 	} else | 	} else | ||||||
| 		rcu_assign_pointer(t->trie, NULL); | 		RCU_INIT_POINTER(t->trie, NULL); | ||||||
| 
 | 
 | ||||||
| 	free_leaf(l); | 	free_leaf(l); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ int gre_add_protocol(const struct gre_protocol *proto, u8 version) | ||||||
| 	if (gre_proto[version]) | 	if (gre_proto[version]) | ||||||
| 		goto err_out_unlock; | 		goto err_out_unlock; | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(gre_proto[version], proto); | 	RCU_INIT_POINTER(gre_proto[version], proto); | ||||||
| 	spin_unlock(&gre_proto_lock); | 	spin_unlock(&gre_proto_lock); | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 | 
 | ||||||
|  | @ -54,7 +54,7 @@ int gre_del_protocol(const struct gre_protocol *proto, u8 version) | ||||||
| 	if (rcu_dereference_protected(gre_proto[version], | 	if (rcu_dereference_protected(gre_proto[version], | ||||||
| 			lockdep_is_held(&gre_proto_lock)) != proto) | 			lockdep_is_held(&gre_proto_lock)) != proto) | ||||||
| 		goto err_out_unlock; | 		goto err_out_unlock; | ||||||
| 	rcu_assign_pointer(gre_proto[version], NULL); | 	RCU_INIT_POINTER(gre_proto[version], NULL); | ||||||
| 	spin_unlock(&gre_proto_lock); | 	spin_unlock(&gre_proto_lock); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
|  | @ -1242,7 +1242,7 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr) | ||||||
| 
 | 
 | ||||||
| 	im->next_rcu = in_dev->mc_list; | 	im->next_rcu = in_dev->mc_list; | ||||||
| 	in_dev->mc_count++; | 	in_dev->mc_count++; | ||||||
| 	rcu_assign_pointer(in_dev->mc_list, im); | 	RCU_INIT_POINTER(in_dev->mc_list, im); | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IP_MULTICAST | #ifdef CONFIG_IP_MULTICAST | ||||||
| 	igmpv3_del_delrec(in_dev, im->multiaddr); | 	igmpv3_del_delrec(in_dev, im->multiaddr); | ||||||
|  | @ -1813,7 +1813,7 @@ int ip_mc_join_group(struct sock *sk , struct ip_mreqn *imr) | ||||||
| 	iml->next_rcu = inet->mc_list; | 	iml->next_rcu = inet->mc_list; | ||||||
| 	iml->sflist = NULL; | 	iml->sflist = NULL; | ||||||
| 	iml->sfmode = MCAST_EXCLUDE; | 	iml->sfmode = MCAST_EXCLUDE; | ||||||
| 	rcu_assign_pointer(inet->mc_list, iml); | 	RCU_INIT_POINTER(inet->mc_list, iml); | ||||||
| 	ip_mc_inc_group(in_dev, addr); | 	ip_mc_inc_group(in_dev, addr); | ||||||
| 	err = 0; | 	err = 0; | ||||||
| done: | done: | ||||||
|  | @ -1835,7 +1835,7 @@ static int ip_mc_leave_src(struct sock *sk, struct ip_mc_socklist *iml, | ||||||
| 	} | 	} | ||||||
| 	err = ip_mc_del_src(in_dev, &iml->multi.imr_multiaddr.s_addr, | 	err = ip_mc_del_src(in_dev, &iml->multi.imr_multiaddr.s_addr, | ||||||
| 			iml->sfmode, psf->sl_count, psf->sl_addr, 0); | 			iml->sfmode, psf->sl_count, psf->sl_addr, 0); | ||||||
| 	rcu_assign_pointer(iml->sflist, NULL); | 	RCU_INIT_POINTER(iml->sflist, NULL); | ||||||
| 	/* decrease mem now to avoid the memleak warning */ | 	/* decrease mem now to avoid the memleak warning */ | ||||||
| 	atomic_sub(IP_SFLSIZE(psf->sl_max), &sk->sk_omem_alloc); | 	atomic_sub(IP_SFLSIZE(psf->sl_max), &sk->sk_omem_alloc); | ||||||
| 	kfree_rcu(psf, rcu); | 	kfree_rcu(psf, rcu); | ||||||
|  | @ -2000,7 +2000,7 @@ int ip_mc_source(int add, int omode, struct sock *sk, struct | ||||||
| 			atomic_sub(IP_SFLSIZE(psl->sl_max), &sk->sk_omem_alloc); | 			atomic_sub(IP_SFLSIZE(psl->sl_max), &sk->sk_omem_alloc); | ||||||
| 			kfree_rcu(psl, rcu); | 			kfree_rcu(psl, rcu); | ||||||
| 		} | 		} | ||||||
| 		rcu_assign_pointer(pmc->sflist, newpsl); | 		RCU_INIT_POINTER(pmc->sflist, newpsl); | ||||||
| 		psl = newpsl; | 		psl = newpsl; | ||||||
| 	} | 	} | ||||||
| 	rv = 1;	/* > 0 for insert logic below if sl_count is 0 */ | 	rv = 1;	/* > 0 for insert logic below if sl_count is 0 */ | ||||||
|  | @ -2103,7 +2103,7 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex) | ||||||
| 	} else | 	} else | ||||||
| 		(void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, | 		(void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, | ||||||
| 			0, NULL, 0); | 			0, NULL, 0); | ||||||
| 	rcu_assign_pointer(pmc->sflist, newpsl); | 	RCU_INIT_POINTER(pmc->sflist, newpsl); | ||||||
| 	pmc->sfmode = msf->imsf_fmode; | 	pmc->sfmode = msf->imsf_fmode; | ||||||
| 	err = 0; | 	err = 0; | ||||||
| done: | done: | ||||||
|  |  | ||||||
|  | @ -231,7 +231,7 @@ static void ipip_tunnel_unlink(struct ipip_net *ipn, struct ip_tunnel *t) | ||||||
| 	     (iter = rtnl_dereference(*tp)) != NULL; | 	     (iter = rtnl_dereference(*tp)) != NULL; | ||||||
| 	     tp = &iter->next) { | 	     tp = &iter->next) { | ||||||
| 		if (t == iter) { | 		if (t == iter) { | ||||||
| 			rcu_assign_pointer(*tp, t->next); | 			RCU_INIT_POINTER(*tp, t->next); | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | @ -241,8 +241,8 @@ static void ipip_tunnel_link(struct ipip_net *ipn, struct ip_tunnel *t) | ||||||
| { | { | ||||||
| 	struct ip_tunnel __rcu **tp = ipip_bucket(ipn, t); | 	struct ip_tunnel __rcu **tp = ipip_bucket(ipn, t); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(t->next, rtnl_dereference(*tp)); | 	RCU_INIT_POINTER(t->next, rtnl_dereference(*tp)); | ||||||
| 	rcu_assign_pointer(*tp, t); | 	RCU_INIT_POINTER(*tp, t); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static struct ip_tunnel * ipip_tunnel_locate(struct net *net, | static struct ip_tunnel * ipip_tunnel_locate(struct net *net, | ||||||
|  | @ -301,7 +301,7 @@ static void ipip_tunnel_uninit(struct net_device *dev) | ||||||
| 	struct ipip_net *ipn = net_generic(net, ipip_net_id); | 	struct ipip_net *ipn = net_generic(net, ipip_net_id); | ||||||
| 
 | 
 | ||||||
| 	if (dev == ipn->fb_tunnel_dev) | 	if (dev == ipn->fb_tunnel_dev) | ||||||
| 		rcu_assign_pointer(ipn->tunnels_wc[0], NULL); | 		RCU_INIT_POINTER(ipn->tunnels_wc[0], NULL); | ||||||
| 	else | 	else | ||||||
| 		ipip_tunnel_unlink(ipn, netdev_priv(dev)); | 		ipip_tunnel_unlink(ipn, netdev_priv(dev)); | ||||||
| 	dev_put(dev); | 	dev_put(dev); | ||||||
|  | @ -791,7 +791,7 @@ static int __net_init ipip_fb_tunnel_init(struct net_device *dev) | ||||||
| 		return -ENOMEM; | 		return -ENOMEM; | ||||||
| 
 | 
 | ||||||
| 	dev_hold(dev); | 	dev_hold(dev); | ||||||
| 	rcu_assign_pointer(ipn->tunnels_wc[0], tunnel); | 	RCU_INIT_POINTER(ipn->tunnels_wc[0], tunnel); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1176,7 +1176,7 @@ static void mrtsock_destruct(struct sock *sk) | ||||||
| 	ipmr_for_each_table(mrt, net) { | 	ipmr_for_each_table(mrt, net) { | ||||||
| 		if (sk == rtnl_dereference(mrt->mroute_sk)) { | 		if (sk == rtnl_dereference(mrt->mroute_sk)) { | ||||||
| 			IPV4_DEVCONF_ALL(net, MC_FORWARDING)--; | 			IPV4_DEVCONF_ALL(net, MC_FORWARDING)--; | ||||||
| 			rcu_assign_pointer(mrt->mroute_sk, NULL); | 			RCU_INIT_POINTER(mrt->mroute_sk, NULL); | ||||||
| 			mroute_clean_tables(mrt); | 			mroute_clean_tables(mrt); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | @ -1224,7 +1224,7 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi | ||||||
| 
 | 
 | ||||||
| 		ret = ip_ra_control(sk, 1, mrtsock_destruct); | 		ret = ip_ra_control(sk, 1, mrtsock_destruct); | ||||||
| 		if (ret == 0) { | 		if (ret == 0) { | ||||||
| 			rcu_assign_pointer(mrt->mroute_sk, sk); | 			RCU_INIT_POINTER(mrt->mroute_sk, sk); | ||||||
| 			IPV4_DEVCONF_ALL(net, MC_FORWARDING)++; | 			IPV4_DEVCONF_ALL(net, MC_FORWARDING)++; | ||||||
| 		} | 		} | ||||||
| 		rtnl_unlock(); | 		rtnl_unlock(); | ||||||
|  |  | ||||||
|  | @ -70,14 +70,14 @@ static unsigned int help(struct sk_buff *skb, | ||||||
| 
 | 
 | ||||||
| static void __exit nf_nat_amanda_fini(void) | static void __exit nf_nat_amanda_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(nf_nat_amanda_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_amanda_hook, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int __init nf_nat_amanda_init(void) | static int __init nf_nat_amanda_init(void) | ||||||
| { | { | ||||||
| 	BUG_ON(nf_nat_amanda_hook != NULL); | 	BUG_ON(nf_nat_amanda_hook != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_amanda_hook, help); | 	RCU_INIT_POINTER(nf_nat_amanda_hook, help); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -514,7 +514,7 @@ int nf_nat_protocol_register(const struct nf_nat_protocol *proto) | ||||||
| 		ret = -EBUSY; | 		ret = -EBUSY; | ||||||
| 		goto out; | 		goto out; | ||||||
| 	} | 	} | ||||||
| 	rcu_assign_pointer(nf_nat_protos[proto->protonum], proto); | 	RCU_INIT_POINTER(nf_nat_protos[proto->protonum], proto); | ||||||
|  out: |  out: | ||||||
| 	spin_unlock_bh(&nf_nat_lock); | 	spin_unlock_bh(&nf_nat_lock); | ||||||
| 	return ret; | 	return ret; | ||||||
|  | @ -525,7 +525,7 @@ EXPORT_SYMBOL(nf_nat_protocol_register); | ||||||
| void nf_nat_protocol_unregister(const struct nf_nat_protocol *proto) | void nf_nat_protocol_unregister(const struct nf_nat_protocol *proto) | ||||||
| { | { | ||||||
| 	spin_lock_bh(&nf_nat_lock); | 	spin_lock_bh(&nf_nat_lock); | ||||||
| 	rcu_assign_pointer(nf_nat_protos[proto->protonum], | 	RCU_INIT_POINTER(nf_nat_protos[proto->protonum], | ||||||
| 			   &nf_nat_unknown_protocol); | 			   &nf_nat_unknown_protocol); | ||||||
| 	spin_unlock_bh(&nf_nat_lock); | 	spin_unlock_bh(&nf_nat_lock); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
|  | @ -736,10 +736,10 @@ static int __init nf_nat_init(void) | ||||||
| 	/* Sew in builtin protocols. */ | 	/* Sew in builtin protocols. */ | ||||||
| 	spin_lock_bh(&nf_nat_lock); | 	spin_lock_bh(&nf_nat_lock); | ||||||
| 	for (i = 0; i < MAX_IP_NAT_PROTO; i++) | 	for (i = 0; i < MAX_IP_NAT_PROTO; i++) | ||||||
| 		rcu_assign_pointer(nf_nat_protos[i], &nf_nat_unknown_protocol); | 		RCU_INIT_POINTER(nf_nat_protos[i], &nf_nat_unknown_protocol); | ||||||
| 	rcu_assign_pointer(nf_nat_protos[IPPROTO_TCP], &nf_nat_protocol_tcp); | 	RCU_INIT_POINTER(nf_nat_protos[IPPROTO_TCP], &nf_nat_protocol_tcp); | ||||||
| 	rcu_assign_pointer(nf_nat_protos[IPPROTO_UDP], &nf_nat_protocol_udp); | 	RCU_INIT_POINTER(nf_nat_protos[IPPROTO_UDP], &nf_nat_protocol_udp); | ||||||
| 	rcu_assign_pointer(nf_nat_protos[IPPROTO_ICMP], &nf_nat_protocol_icmp); | 	RCU_INIT_POINTER(nf_nat_protos[IPPROTO_ICMP], &nf_nat_protocol_icmp); | ||||||
| 	spin_unlock_bh(&nf_nat_lock); | 	spin_unlock_bh(&nf_nat_lock); | ||||||
| 
 | 
 | ||||||
| 	/* Initialize fake conntrack so that NAT will skip it */ | 	/* Initialize fake conntrack so that NAT will skip it */ | ||||||
|  | @ -748,12 +748,12 @@ static int __init nf_nat_init(void) | ||||||
| 	l3proto = nf_ct_l3proto_find_get((u_int16_t)AF_INET); | 	l3proto = nf_ct_l3proto_find_get((u_int16_t)AF_INET); | ||||||
| 
 | 
 | ||||||
| 	BUG_ON(nf_nat_seq_adjust_hook != NULL); | 	BUG_ON(nf_nat_seq_adjust_hook != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_seq_adjust_hook, nf_nat_seq_adjust); | 	RCU_INIT_POINTER(nf_nat_seq_adjust_hook, nf_nat_seq_adjust); | ||||||
| 	BUG_ON(nfnetlink_parse_nat_setup_hook != NULL); | 	BUG_ON(nfnetlink_parse_nat_setup_hook != NULL); | ||||||
| 	rcu_assign_pointer(nfnetlink_parse_nat_setup_hook, | 	RCU_INIT_POINTER(nfnetlink_parse_nat_setup_hook, | ||||||
| 			   nfnetlink_parse_nat_setup); | 			   nfnetlink_parse_nat_setup); | ||||||
| 	BUG_ON(nf_ct_nat_offset != NULL); | 	BUG_ON(nf_ct_nat_offset != NULL); | ||||||
| 	rcu_assign_pointer(nf_ct_nat_offset, nf_nat_get_offset); | 	RCU_INIT_POINTER(nf_ct_nat_offset, nf_nat_get_offset); | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 | 
 | ||||||
|  cleanup_extend: |  cleanup_extend: | ||||||
|  | @ -766,9 +766,9 @@ static void __exit nf_nat_cleanup(void) | ||||||
| 	unregister_pernet_subsys(&nf_nat_net_ops); | 	unregister_pernet_subsys(&nf_nat_net_ops); | ||||||
| 	nf_ct_l3proto_put(l3proto); | 	nf_ct_l3proto_put(l3proto); | ||||||
| 	nf_ct_extend_unregister(&nat_extend); | 	nf_ct_extend_unregister(&nat_extend); | ||||||
| 	rcu_assign_pointer(nf_nat_seq_adjust_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_seq_adjust_hook, NULL); | ||||||
| 	rcu_assign_pointer(nfnetlink_parse_nat_setup_hook, NULL); | 	RCU_INIT_POINTER(nfnetlink_parse_nat_setup_hook, NULL); | ||||||
| 	rcu_assign_pointer(nf_ct_nat_offset, NULL); | 	RCU_INIT_POINTER(nf_ct_nat_offset, NULL); | ||||||
| 	synchronize_net(); | 	synchronize_net(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -113,14 +113,14 @@ static unsigned int nf_nat_ftp(struct sk_buff *skb, | ||||||
| 
 | 
 | ||||||
| static void __exit nf_nat_ftp_fini(void) | static void __exit nf_nat_ftp_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(nf_nat_ftp_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_ftp_hook, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int __init nf_nat_ftp_init(void) | static int __init nf_nat_ftp_init(void) | ||||||
| { | { | ||||||
| 	BUG_ON(nf_nat_ftp_hook != NULL); | 	BUG_ON(nf_nat_ftp_hook != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_ftp_hook, nf_nat_ftp); | 	RCU_INIT_POINTER(nf_nat_ftp_hook, nf_nat_ftp); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -581,30 +581,30 @@ static int __init init(void) | ||||||
| 	BUG_ON(nat_callforwarding_hook != NULL); | 	BUG_ON(nat_callforwarding_hook != NULL); | ||||||
| 	BUG_ON(nat_q931_hook != NULL); | 	BUG_ON(nat_q931_hook != NULL); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(set_h245_addr_hook, set_h245_addr); | 	RCU_INIT_POINTER(set_h245_addr_hook, set_h245_addr); | ||||||
| 	rcu_assign_pointer(set_h225_addr_hook, set_h225_addr); | 	RCU_INIT_POINTER(set_h225_addr_hook, set_h225_addr); | ||||||
| 	rcu_assign_pointer(set_sig_addr_hook, set_sig_addr); | 	RCU_INIT_POINTER(set_sig_addr_hook, set_sig_addr); | ||||||
| 	rcu_assign_pointer(set_ras_addr_hook, set_ras_addr); | 	RCU_INIT_POINTER(set_ras_addr_hook, set_ras_addr); | ||||||
| 	rcu_assign_pointer(nat_rtp_rtcp_hook, nat_rtp_rtcp); | 	RCU_INIT_POINTER(nat_rtp_rtcp_hook, nat_rtp_rtcp); | ||||||
| 	rcu_assign_pointer(nat_t120_hook, nat_t120); | 	RCU_INIT_POINTER(nat_t120_hook, nat_t120); | ||||||
| 	rcu_assign_pointer(nat_h245_hook, nat_h245); | 	RCU_INIT_POINTER(nat_h245_hook, nat_h245); | ||||||
| 	rcu_assign_pointer(nat_callforwarding_hook, nat_callforwarding); | 	RCU_INIT_POINTER(nat_callforwarding_hook, nat_callforwarding); | ||||||
| 	rcu_assign_pointer(nat_q931_hook, nat_q931); | 	RCU_INIT_POINTER(nat_q931_hook, nat_q931); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /****************************************************************************/ | /****************************************************************************/ | ||||||
| static void __exit fini(void) | static void __exit fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(set_h245_addr_hook, NULL); | 	RCU_INIT_POINTER(set_h245_addr_hook, NULL); | ||||||
| 	rcu_assign_pointer(set_h225_addr_hook, NULL); | 	RCU_INIT_POINTER(set_h225_addr_hook, NULL); | ||||||
| 	rcu_assign_pointer(set_sig_addr_hook, NULL); | 	RCU_INIT_POINTER(set_sig_addr_hook, NULL); | ||||||
| 	rcu_assign_pointer(set_ras_addr_hook, NULL); | 	RCU_INIT_POINTER(set_ras_addr_hook, NULL); | ||||||
| 	rcu_assign_pointer(nat_rtp_rtcp_hook, NULL); | 	RCU_INIT_POINTER(nat_rtp_rtcp_hook, NULL); | ||||||
| 	rcu_assign_pointer(nat_t120_hook, NULL); | 	RCU_INIT_POINTER(nat_t120_hook, NULL); | ||||||
| 	rcu_assign_pointer(nat_h245_hook, NULL); | 	RCU_INIT_POINTER(nat_h245_hook, NULL); | ||||||
| 	rcu_assign_pointer(nat_callforwarding_hook, NULL); | 	RCU_INIT_POINTER(nat_callforwarding_hook, NULL); | ||||||
| 	rcu_assign_pointer(nat_q931_hook, NULL); | 	RCU_INIT_POINTER(nat_q931_hook, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -75,14 +75,14 @@ static unsigned int help(struct sk_buff *skb, | ||||||
| 
 | 
 | ||||||
| static void __exit nf_nat_irc_fini(void) | static void __exit nf_nat_irc_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(nf_nat_irc_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_irc_hook, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int __init nf_nat_irc_init(void) | static int __init nf_nat_irc_init(void) | ||||||
| { | { | ||||||
| 	BUG_ON(nf_nat_irc_hook != NULL); | 	BUG_ON(nf_nat_irc_hook != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_irc_hook, help); | 	RCU_INIT_POINTER(nf_nat_irc_hook, help); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -282,25 +282,25 @@ static int __init nf_nat_helper_pptp_init(void) | ||||||
| 	nf_nat_need_gre(); | 	nf_nat_need_gre(); | ||||||
| 
 | 
 | ||||||
| 	BUG_ON(nf_nat_pptp_hook_outbound != NULL); | 	BUG_ON(nf_nat_pptp_hook_outbound != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_outbound, pptp_outbound_pkt); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_outbound, pptp_outbound_pkt); | ||||||
| 
 | 
 | ||||||
| 	BUG_ON(nf_nat_pptp_hook_inbound != NULL); | 	BUG_ON(nf_nat_pptp_hook_inbound != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_inbound, pptp_inbound_pkt); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_inbound, pptp_inbound_pkt); | ||||||
| 
 | 
 | ||||||
| 	BUG_ON(nf_nat_pptp_hook_exp_gre != NULL); | 	BUG_ON(nf_nat_pptp_hook_exp_gre != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_exp_gre, pptp_exp_gre); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_exp_gre, pptp_exp_gre); | ||||||
| 
 | 
 | ||||||
| 	BUG_ON(nf_nat_pptp_hook_expectfn != NULL); | 	BUG_ON(nf_nat_pptp_hook_expectfn != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_expectfn, pptp_nat_expected); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_expectfn, pptp_nat_expected); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void __exit nf_nat_helper_pptp_fini(void) | static void __exit nf_nat_helper_pptp_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_expectfn, NULL); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_expectfn, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_exp_gre, NULL); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_exp_gre, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_inbound, NULL); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_inbound, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_pptp_hook_outbound, NULL); | 	RCU_INIT_POINTER(nf_nat_pptp_hook_outbound, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -528,13 +528,13 @@ static unsigned int ip_nat_sdp_media(struct sk_buff *skb, unsigned int dataoff, | ||||||
| 
 | 
 | ||||||
| static void __exit nf_nat_sip_fini(void) | static void __exit nf_nat_sip_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(nf_nat_sip_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_sip_hook, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_sip_seq_adjust_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_sip_seq_adjust_hook, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_sip_expect_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_sip_expect_hook, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_addr_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_sdp_addr_hook, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_port_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_sdp_port_hook, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_session_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_sdp_session_hook, NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_media_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_sdp_media_hook, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -547,13 +547,13 @@ static int __init nf_nat_sip_init(void) | ||||||
| 	BUG_ON(nf_nat_sdp_port_hook != NULL); | 	BUG_ON(nf_nat_sdp_port_hook != NULL); | ||||||
| 	BUG_ON(nf_nat_sdp_session_hook != NULL); | 	BUG_ON(nf_nat_sdp_session_hook != NULL); | ||||||
| 	BUG_ON(nf_nat_sdp_media_hook != NULL); | 	BUG_ON(nf_nat_sdp_media_hook != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_sip_hook, ip_nat_sip); | 	RCU_INIT_POINTER(nf_nat_sip_hook, ip_nat_sip); | ||||||
| 	rcu_assign_pointer(nf_nat_sip_seq_adjust_hook, ip_nat_sip_seq_adjust); | 	RCU_INIT_POINTER(nf_nat_sip_seq_adjust_hook, ip_nat_sip_seq_adjust); | ||||||
| 	rcu_assign_pointer(nf_nat_sip_expect_hook, ip_nat_sip_expect); | 	RCU_INIT_POINTER(nf_nat_sip_expect_hook, ip_nat_sip_expect); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_addr_hook, ip_nat_sdp_addr); | 	RCU_INIT_POINTER(nf_nat_sdp_addr_hook, ip_nat_sdp_addr); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_port_hook, ip_nat_sdp_port); | 	RCU_INIT_POINTER(nf_nat_sdp_port_hook, ip_nat_sdp_port); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_session_hook, ip_nat_sdp_session); | 	RCU_INIT_POINTER(nf_nat_sdp_session_hook, ip_nat_sdp_session); | ||||||
| 	rcu_assign_pointer(nf_nat_sdp_media_hook, ip_nat_sdp_media); | 	RCU_INIT_POINTER(nf_nat_sdp_media_hook, ip_nat_sdp_media); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1310,7 +1310,7 @@ static int __init nf_nat_snmp_basic_init(void) | ||||||
| 	int ret = 0; | 	int ret = 0; | ||||||
| 
 | 
 | ||||||
| 	BUG_ON(nf_nat_snmp_hook != NULL); | 	BUG_ON(nf_nat_snmp_hook != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_snmp_hook, help); | 	RCU_INIT_POINTER(nf_nat_snmp_hook, help); | ||||||
| 
 | 
 | ||||||
| 	ret = nf_conntrack_helper_register(&snmp_trap_helper); | 	ret = nf_conntrack_helper_register(&snmp_trap_helper); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
|  | @ -1322,7 +1322,7 @@ static int __init nf_nat_snmp_basic_init(void) | ||||||
| 
 | 
 | ||||||
| static void __exit nf_nat_snmp_basic_fini(void) | static void __exit nf_nat_snmp_basic_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(nf_nat_snmp_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_snmp_hook, NULL); | ||||||
| 	nf_conntrack_helper_unregister(&snmp_trap_helper); | 	nf_conntrack_helper_unregister(&snmp_trap_helper); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -284,7 +284,7 @@ static int __init nf_nat_standalone_init(void) | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_XFRM | #ifdef CONFIG_XFRM | ||||||
| 	BUG_ON(ip_nat_decode_session != NULL); | 	BUG_ON(ip_nat_decode_session != NULL); | ||||||
| 	rcu_assign_pointer(ip_nat_decode_session, nat_decode_session); | 	RCU_INIT_POINTER(ip_nat_decode_session, nat_decode_session); | ||||||
| #endif | #endif | ||||||
| 	ret = nf_nat_rule_init(); | 	ret = nf_nat_rule_init(); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
|  | @ -302,7 +302,7 @@ static int __init nf_nat_standalone_init(void) | ||||||
| 	nf_nat_rule_cleanup(); | 	nf_nat_rule_cleanup(); | ||||||
|  cleanup_decode_session: |  cleanup_decode_session: | ||||||
| #ifdef CONFIG_XFRM | #ifdef CONFIG_XFRM | ||||||
| 	rcu_assign_pointer(ip_nat_decode_session, NULL); | 	RCU_INIT_POINTER(ip_nat_decode_session, NULL); | ||||||
| 	synchronize_net(); | 	synchronize_net(); | ||||||
| #endif | #endif | ||||||
| 	return ret; | 	return ret; | ||||||
|  | @ -313,7 +313,7 @@ static void __exit nf_nat_standalone_fini(void) | ||||||
| 	nf_unregister_hooks(nf_nat_ops, ARRAY_SIZE(nf_nat_ops)); | 	nf_unregister_hooks(nf_nat_ops, ARRAY_SIZE(nf_nat_ops)); | ||||||
| 	nf_nat_rule_cleanup(); | 	nf_nat_rule_cleanup(); | ||||||
| #ifdef CONFIG_XFRM | #ifdef CONFIG_XFRM | ||||||
| 	rcu_assign_pointer(ip_nat_decode_session, NULL); | 	RCU_INIT_POINTER(ip_nat_decode_session, NULL); | ||||||
| 	synchronize_net(); | 	synchronize_net(); | ||||||
| #endif | #endif | ||||||
| 	/* Conntrack caches are unregistered in nf_conntrack_cleanup */ | 	/* Conntrack caches are unregistered in nf_conntrack_cleanup */ | ||||||
|  |  | ||||||
|  | @ -36,14 +36,14 @@ static unsigned int help(struct sk_buff *skb, | ||||||
| 
 | 
 | ||||||
| static void __exit nf_nat_tftp_fini(void) | static void __exit nf_nat_tftp_fini(void) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(nf_nat_tftp_hook, NULL); | 	RCU_INIT_POINTER(nf_nat_tftp_hook, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int __init nf_nat_tftp_init(void) | static int __init nf_nat_tftp_init(void) | ||||||
| { | { | ||||||
| 	BUG_ON(nf_nat_tftp_hook != NULL); | 	BUG_ON(nf_nat_tftp_hook != NULL); | ||||||
| 	rcu_assign_pointer(nf_nat_tftp_hook, help); | 	RCU_INIT_POINTER(nf_nat_tftp_hook, help); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -428,7 +428,7 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev) | ||||||
| 	ndev->tstamp = jiffies; | 	ndev->tstamp = jiffies; | ||||||
| 	addrconf_sysctl_register(ndev); | 	addrconf_sysctl_register(ndev); | ||||||
| 	/* protected by rtnl_lock */ | 	/* protected by rtnl_lock */ | ||||||
| 	rcu_assign_pointer(dev->ip6_ptr, ndev); | 	RCU_INIT_POINTER(dev->ip6_ptr, ndev); | ||||||
| 
 | 
 | ||||||
| 	/* Join all-node multicast group */ | 	/* Join all-node multicast group */ | ||||||
| 	ipv6_dev_mc_inc(dev, &in6addr_linklocal_allnodes); | 	ipv6_dev_mc_inc(dev, &in6addr_linklocal_allnodes); | ||||||
|  | @ -2733,7 +2733,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) | ||||||
| 		idev->dead = 1; | 		idev->dead = 1; | ||||||
| 
 | 
 | ||||||
| 		/* protected by rtnl_lock */ | 		/* protected by rtnl_lock */ | ||||||
| 		rcu_assign_pointer(dev->ip6_ptr, NULL); | 		RCU_INIT_POINTER(dev->ip6_ptr, NULL); | ||||||
| 
 | 
 | ||||||
| 		/* Step 1.5: remove snmp6 entry */ | 		/* Step 1.5: remove snmp6 entry */ | ||||||
| 		snmp6_unregister_dev(idev); | 		snmp6_unregister_dev(idev); | ||||||
|  |  | ||||||
|  | @ -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); | 	struct ip6_tnl __rcu **tp = ip6_tnl_bucket(ip6n, &t->parms); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(t->next , rtnl_dereference(*tp)); | 	RCU_INIT_POINTER(t->next , rtnl_dereference(*tp)); | ||||||
| 	rcu_assign_pointer(*tp, t); | 	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; | 	     (iter = rtnl_dereference(*tp)) != NULL; | ||||||
| 	     tp = &iter->next) { | 	     tp = &iter->next) { | ||||||
| 		if (t == iter) { | 		if (t == iter) { | ||||||
| 			rcu_assign_pointer(*tp, t->next); | 			RCU_INIT_POINTER(*tp, t->next); | ||||||
| 			break; | 			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); | 	struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id); | ||||||
| 
 | 
 | ||||||
| 	if (dev == ip6n->fb_tnl_dev) | 	if (dev == ip6n->fb_tnl_dev) | ||||||
| 		rcu_assign_pointer(ip6n->tnls_wc[0], NULL); | 		RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL); | ||||||
| 	else | 	else | ||||||
| 		ip6_tnl_unlink(ip6n, t); | 		ip6_tnl_unlink(ip6n, t); | ||||||
| 	ip6_tnl_dst_reset(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; | 	t->parms.proto = IPPROTO_IPV6; | ||||||
| 	dev_hold(dev); | 	dev_hold(dev); | ||||||
| 	rcu_assign_pointer(ip6n->tnls_wc[0], t); | 	RCU_INIT_POINTER(ip6n->tnls_wc[0], t); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -130,14 +130,14 @@ static mh_filter_t __rcu *mh_filter __read_mostly; | ||||||
| 
 | 
 | ||||||
| int rawv6_mh_filter_register(mh_filter_t filter) | int rawv6_mh_filter_register(mh_filter_t filter) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(mh_filter, filter); | 	RCU_INIT_POINTER(mh_filter, filter); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| EXPORT_SYMBOL(rawv6_mh_filter_register); | EXPORT_SYMBOL(rawv6_mh_filter_register); | ||||||
| 
 | 
 | ||||||
| int rawv6_mh_filter_unregister(mh_filter_t filter) | int rawv6_mh_filter_unregister(mh_filter_t filter) | ||||||
| { | { | ||||||
| 	rcu_assign_pointer(mh_filter, NULL); | 	RCU_INIT_POINTER(mh_filter, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -182,7 +182,7 @@ static void ipip6_tunnel_unlink(struct sit_net *sitn, struct ip_tunnel *t) | ||||||
| 	     (iter = rtnl_dereference(*tp)) != NULL; | 	     (iter = rtnl_dereference(*tp)) != NULL; | ||||||
| 	     tp = &iter->next) { | 	     tp = &iter->next) { | ||||||
| 		if (t == iter) { | 		if (t == iter) { | ||||||
| 			rcu_assign_pointer(*tp, t->next); | 			RCU_INIT_POINTER(*tp, t->next); | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | @ -192,8 +192,8 @@ static void ipip6_tunnel_link(struct sit_net *sitn, struct ip_tunnel *t) | ||||||
| { | { | ||||||
| 	struct ip_tunnel __rcu **tp = ipip6_bucket(sitn, t); | 	struct ip_tunnel __rcu **tp = ipip6_bucket(sitn, t); | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(t->next, rtnl_dereference(*tp)); | 	RCU_INIT_POINTER(t->next, rtnl_dereference(*tp)); | ||||||
| 	rcu_assign_pointer(*tp, t); | 	RCU_INIT_POINTER(*tp, t); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn) | static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn) | ||||||
|  | @ -391,7 +391,7 @@ ipip6_tunnel_add_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a, int chg) | ||||||
| 	p->addr = a->addr; | 	p->addr = a->addr; | ||||||
| 	p->flags = a->flags; | 	p->flags = a->flags; | ||||||
| 	t->prl_count++; | 	t->prl_count++; | ||||||
| 	rcu_assign_pointer(t->prl, p); | 	RCU_INIT_POINTER(t->prl, p); | ||||||
| out: | out: | ||||||
| 	return err; | 	return err; | ||||||
| } | } | ||||||
|  | @ -474,7 +474,7 @@ static void ipip6_tunnel_uninit(struct net_device *dev) | ||||||
| 	struct sit_net *sitn = net_generic(net, sit_net_id); | 	struct sit_net *sitn = net_generic(net, sit_net_id); | ||||||
| 
 | 
 | ||||||
| 	if (dev == sitn->fb_tunnel_dev) { | 	if (dev == sitn->fb_tunnel_dev) { | ||||||
| 		rcu_assign_pointer(sitn->tunnels_wc[0], NULL); | 		RCU_INIT_POINTER(sitn->tunnels_wc[0], NULL); | ||||||
| 	} else { | 	} else { | ||||||
| 		ipip6_tunnel_unlink(sitn, netdev_priv(dev)); | 		ipip6_tunnel_unlink(sitn, netdev_priv(dev)); | ||||||
| 		ipip6_tunnel_del_prl(netdev_priv(dev), NULL); | 		ipip6_tunnel_del_prl(netdev_priv(dev), NULL); | ||||||
|  | @ -1173,7 +1173,7 @@ static int __net_init ipip6_fb_tunnel_init(struct net_device *dev) | ||||||
| 	if (!dev->tstats) | 	if (!dev->tstats) | ||||||
| 		return -ENOMEM; | 		return -ENOMEM; | ||||||
| 	dev_hold(dev); | 	dev_hold(dev); | ||||||
| 	rcu_assign_pointer(sitn->tunnels_wc[0], tunnel); | 	RCU_INIT_POINTER(sitn->tunnels_wc[0], tunnel); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -69,7 +69,7 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, | ||||||
| 	if (!tid_rx) | 	if (!tid_rx) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], NULL); | 	RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], NULL); | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_MAC80211_HT_DEBUG | #ifdef CONFIG_MAC80211_HT_DEBUG | ||||||
| 	printk(KERN_DEBUG "Rx BA session stop requested for %pM tid %u\n", | 	printk(KERN_DEBUG "Rx BA session stop requested for %pM tid %u\n", | ||||||
|  | @ -340,7 +340,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, | ||||||
| 	status = WLAN_STATUS_SUCCESS; | 	status = WLAN_STATUS_SUCCESS; | ||||||
| 
 | 
 | ||||||
| 	/* activate it for RX */ | 	/* activate it for RX */ | ||||||
| 	rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx); | 	RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx); | ||||||
| 
 | 
 | ||||||
| 	if (timeout) | 	if (timeout) | ||||||
| 		mod_timer(&tid_agg_rx->session_timer, TU_TO_EXP_TIME(timeout)); | 		mod_timer(&tid_agg_rx->session_timer, TU_TO_EXP_TIME(timeout)); | ||||||
|  |  | ||||||
|  | @ -62,7 +62,7 @@ static int ieee80211_change_iface(struct wiphy *wiphy, | ||||||
| 
 | 
 | ||||||
| 	if (type == NL80211_IFTYPE_AP_VLAN && | 	if (type == NL80211_IFTYPE_AP_VLAN && | ||||||
| 	    params && params->use_4addr == 0) | 	    params && params->use_4addr == 0) | ||||||
| 		rcu_assign_pointer(sdata->u.vlan.sta, NULL); | 		RCU_INIT_POINTER(sdata->u.vlan.sta, NULL); | ||||||
| 	else if (type == NL80211_IFTYPE_STATION && | 	else if (type == NL80211_IFTYPE_STATION && | ||||||
| 		 params && params->use_4addr >= 0) | 		 params && params->use_4addr >= 0) | ||||||
| 		sdata->u.mgd.use_4addr = params->use_4addr; | 		sdata->u.mgd.use_4addr = params->use_4addr; | ||||||
|  | @ -542,7 +542,7 @@ static int ieee80211_config_beacon(struct ieee80211_sub_if_data *sdata, | ||||||
| 
 | 
 | ||||||
| 	sdata->vif.bss_conf.dtim_period = new->dtim_period; | 	sdata->vif.bss_conf.dtim_period = new->dtim_period; | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(sdata->u.ap.beacon, new); | 	RCU_INIT_POINTER(sdata->u.ap.beacon, new); | ||||||
| 
 | 
 | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| 
 | 
 | ||||||
|  | @ -594,7 +594,7 @@ static int ieee80211_del_beacon(struct wiphy *wiphy, struct net_device *dev) | ||||||
| 	if (!old) | 	if (!old) | ||||||
| 		return -ENOENT; | 		return -ENOENT; | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(sdata->u.ap.beacon, NULL); | 	RCU_INIT_POINTER(sdata->u.ap.beacon, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| 	kfree(old); | 	kfree(old); | ||||||
| 
 | 
 | ||||||
|  | @ -857,7 +857,7 @@ static int ieee80211_change_station(struct wiphy *wiphy, | ||||||
| 				return -EBUSY; | 				return -EBUSY; | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			rcu_assign_pointer(vlansdata->u.vlan.sta, sta); | 			RCU_INIT_POINTER(vlansdata->u.vlan.sta, sta); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		sta->sdata = vlansdata; | 		sta->sdata = vlansdata; | ||||||
|  |  | ||||||
|  | @ -84,7 +84,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, | ||||||
| 	drv_reset_tsf(local); | 	drv_reset_tsf(local); | ||||||
| 
 | 
 | ||||||
| 	skb = ifibss->skb; | 	skb = ifibss->skb; | ||||||
| 	rcu_assign_pointer(ifibss->presp, NULL); | 	RCU_INIT_POINTER(ifibss->presp, NULL); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| 	skb->data = skb->head; | 	skb->data = skb->head; | ||||||
| 	skb->len = 0; | 	skb->len = 0; | ||||||
|  | @ -184,7 +184,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, | ||||||
| 		*pos++ = 0; /* U-APSD no in use */ | 		*pos++ = 0; /* U-APSD no in use */ | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(ifibss->presp, skb); | 	RCU_INIT_POINTER(ifibss->presp, skb); | ||||||
| 
 | 
 | ||||||
| 	sdata->vif.bss_conf.beacon_int = beacon_int; | 	sdata->vif.bss_conf.beacon_int = beacon_int; | ||||||
| 	sdata->vif.bss_conf.basic_rates = basic_rates; | 	sdata->vif.bss_conf.basic_rates = basic_rates; | ||||||
|  | @ -995,7 +995,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata) | ||||||
| 	kfree(sdata->u.ibss.ie); | 	kfree(sdata->u.ibss.ie); | ||||||
| 	skb = rcu_dereference_protected(sdata->u.ibss.presp, | 	skb = rcu_dereference_protected(sdata->u.ibss.presp, | ||||||
| 					lockdep_is_held(&sdata->u.ibss.mtx)); | 					lockdep_is_held(&sdata->u.ibss.mtx)); | ||||||
| 	rcu_assign_pointer(sdata->u.ibss.presp, NULL); | 	RCU_INIT_POINTER(sdata->u.ibss.presp, NULL); | ||||||
| 	sdata->vif.bss_conf.ibss_joined = false; | 	sdata->vif.bss_conf.ibss_joined = false; | ||||||
| 	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED | | 	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED | | ||||||
| 						BSS_CHANGED_IBSS); | 						BSS_CHANGED_IBSS); | ||||||
|  |  | ||||||
|  | @ -456,7 +456,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | ||||||
| 						 BSS_CHANGED_BEACON_ENABLED); | 						 BSS_CHANGED_BEACON_ENABLED); | ||||||
| 
 | 
 | ||||||
| 		/* remove beacon */ | 		/* remove beacon */ | ||||||
| 		rcu_assign_pointer(sdata->u.ap.beacon, NULL); | 		RCU_INIT_POINTER(sdata->u.ap.beacon, NULL); | ||||||
| 		synchronize_rcu(); | 		synchronize_rcu(); | ||||||
| 		kfree(old_beacon); | 		kfree(old_beacon); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -72,7 +72,7 @@ static int sta_info_hash_del(struct ieee80211_local *local, | ||||||
| 	if (!s) | 	if (!s) | ||||||
| 		return -ENOENT; | 		return -ENOENT; | ||||||
| 	if (s == sta) { | 	if (s == sta) { | ||||||
| 		rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)], | 		RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)], | ||||||
| 				   s->hnext); | 				   s->hnext); | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
|  | @ -82,7 +82,7 @@ static int sta_info_hash_del(struct ieee80211_local *local, | ||||||
| 		s = rcu_dereference_protected(s->hnext, | 		s = rcu_dereference_protected(s->hnext, | ||||||
| 					lockdep_is_held(&local->sta_lock)); | 					lockdep_is_held(&local->sta_lock)); | ||||||
| 	if (rcu_access_pointer(s->hnext)) { | 	if (rcu_access_pointer(s->hnext)) { | ||||||
| 		rcu_assign_pointer(s->hnext, sta->hnext); | 		RCU_INIT_POINTER(s->hnext, sta->hnext); | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -184,7 +184,7 @@ static void sta_info_hash_add(struct ieee80211_local *local, | ||||||
| 			      struct sta_info *sta) | 			      struct sta_info *sta) | ||||||
| { | { | ||||||
| 	sta->hnext = local->sta_hash[STA_HASH(sta->sta.addr)]; | 	sta->hnext = local->sta_hash[STA_HASH(sta->sta.addr)]; | ||||||
| 	rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)], sta); | 	RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)], sta); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void sta_unblock(struct work_struct *wk) | static void sta_unblock(struct work_struct *wk) | ||||||
|  | @ -672,7 +672,7 @@ static int __must_check __sta_info_destroy(struct sta_info *sta) | ||||||
| 	local->sta_generation++; | 	local->sta_generation++; | ||||||
| 
 | 
 | ||||||
| 	if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) | 	if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) | ||||||
| 		rcu_assign_pointer(sdata->u.vlan.sta, NULL); | 		RCU_INIT_POINTER(sdata->u.vlan.sta, NULL); | ||||||
| 
 | 
 | ||||||
| 	if (sta->uploaded) { | 	if (sta->uploaded) { | ||||||
| 		if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) | 		if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ int nf_register_afinfo(const struct nf_afinfo *afinfo) | ||||||
| 	err = mutex_lock_interruptible(&afinfo_mutex); | 	err = mutex_lock_interruptible(&afinfo_mutex); | ||||||
| 	if (err < 0) | 	if (err < 0) | ||||||
| 		return err; | 		return err; | ||||||
| 	rcu_assign_pointer(nf_afinfo[afinfo->family], afinfo); | 	RCU_INIT_POINTER(nf_afinfo[afinfo->family], afinfo); | ||||||
| 	mutex_unlock(&afinfo_mutex); | 	mutex_unlock(&afinfo_mutex); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  | @ -46,7 +46,7 @@ EXPORT_SYMBOL_GPL(nf_register_afinfo); | ||||||
| void nf_unregister_afinfo(const struct nf_afinfo *afinfo) | void nf_unregister_afinfo(const struct nf_afinfo *afinfo) | ||||||
| { | { | ||||||
| 	mutex_lock(&afinfo_mutex); | 	mutex_lock(&afinfo_mutex); | ||||||
| 	rcu_assign_pointer(nf_afinfo[afinfo->family], NULL); | 	RCU_INIT_POINTER(nf_afinfo[afinfo->family], NULL); | ||||||
| 	mutex_unlock(&afinfo_mutex); | 	mutex_unlock(&afinfo_mutex); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -779,7 +779,7 @@ init_conntrack(struct net *net, struct nf_conn *tmpl, | ||||||
| 		if (exp->helper) { | 		if (exp->helper) { | ||||||
| 			help = nf_ct_helper_ext_add(ct, GFP_ATOMIC); | 			help = nf_ct_helper_ext_add(ct, GFP_ATOMIC); | ||||||
| 			if (help) | 			if (help) | ||||||
| 				rcu_assign_pointer(help->helper, exp->helper); | 				RCU_INIT_POINTER(help->helper, exp->helper); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_NF_CONNTRACK_MARK | #ifdef CONFIG_NF_CONNTRACK_MARK | ||||||
|  | @ -1317,7 +1317,7 @@ static void nf_conntrack_cleanup_net(struct net *net) | ||||||
| void nf_conntrack_cleanup(struct net *net) | void nf_conntrack_cleanup(struct net *net) | ||||||
| { | { | ||||||
| 	if (net_eq(net, &init_net)) | 	if (net_eq(net, &init_net)) | ||||||
| 		rcu_assign_pointer(ip_ct_attach, NULL); | 		RCU_INIT_POINTER(ip_ct_attach, NULL); | ||||||
| 
 | 
 | ||||||
| 	/* This makes sure all current packets have passed through
 | 	/* This makes sure all current packets have passed through
 | ||||||
| 	   netfilter framework.  Roll on, two-stage module | 	   netfilter framework.  Roll on, two-stage module | ||||||
|  | @ -1327,7 +1327,7 @@ void nf_conntrack_cleanup(struct net *net) | ||||||
| 	nf_conntrack_cleanup_net(net); | 	nf_conntrack_cleanup_net(net); | ||||||
| 
 | 
 | ||||||
| 	if (net_eq(net, &init_net)) { | 	if (net_eq(net, &init_net)) { | ||||||
| 		rcu_assign_pointer(nf_ct_destroy, NULL); | 		RCU_INIT_POINTER(nf_ct_destroy, NULL); | ||||||
| 		nf_conntrack_cleanup_init_net(); | 		nf_conntrack_cleanup_init_net(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -1576,11 +1576,11 @@ int nf_conntrack_init(struct net *net) | ||||||
| 
 | 
 | ||||||
| 	if (net_eq(net, &init_net)) { | 	if (net_eq(net, &init_net)) { | ||||||
| 		/* For use by REJECT target */ | 		/* For use by REJECT target */ | ||||||
| 		rcu_assign_pointer(ip_ct_attach, nf_conntrack_attach); | 		RCU_INIT_POINTER(ip_ct_attach, nf_conntrack_attach); | ||||||
| 		rcu_assign_pointer(nf_ct_destroy, destroy_conntrack); | 		RCU_INIT_POINTER(nf_ct_destroy, destroy_conntrack); | ||||||
| 
 | 
 | ||||||
| 		/* Howto get NAT offsets */ | 		/* Howto get NAT offsets */ | ||||||
| 		rcu_assign_pointer(nf_ct_nat_offset, NULL); | 		RCU_INIT_POINTER(nf_ct_nat_offset, NULL); | ||||||
| 	} | 	} | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -94,7 +94,7 @@ int nf_conntrack_register_notifier(struct nf_ct_event_notifier *new) | ||||||
| 		ret = -EBUSY; | 		ret = -EBUSY; | ||||||
| 		goto out_unlock; | 		goto out_unlock; | ||||||
| 	} | 	} | ||||||
| 	rcu_assign_pointer(nf_conntrack_event_cb, new); | 	RCU_INIT_POINTER(nf_conntrack_event_cb, new); | ||||||
| 	mutex_unlock(&nf_ct_ecache_mutex); | 	mutex_unlock(&nf_ct_ecache_mutex); | ||||||
| 	return ret; | 	return ret; | ||||||
| 
 | 
 | ||||||
|  | @ -112,7 +112,7 @@ void nf_conntrack_unregister_notifier(struct nf_ct_event_notifier *new) | ||||||
| 	notify = rcu_dereference_protected(nf_conntrack_event_cb, | 	notify = rcu_dereference_protected(nf_conntrack_event_cb, | ||||||
| 					   lockdep_is_held(&nf_ct_ecache_mutex)); | 					   lockdep_is_held(&nf_ct_ecache_mutex)); | ||||||
| 	BUG_ON(notify != new); | 	BUG_ON(notify != new); | ||||||
| 	rcu_assign_pointer(nf_conntrack_event_cb, NULL); | 	RCU_INIT_POINTER(nf_conntrack_event_cb, NULL); | ||||||
| 	mutex_unlock(&nf_ct_ecache_mutex); | 	mutex_unlock(&nf_ct_ecache_mutex); | ||||||
| } | } | ||||||
| EXPORT_SYMBOL_GPL(nf_conntrack_unregister_notifier); | EXPORT_SYMBOL_GPL(nf_conntrack_unregister_notifier); | ||||||
|  | @ -129,7 +129,7 @@ int nf_ct_expect_register_notifier(struct nf_exp_event_notifier *new) | ||||||
| 		ret = -EBUSY; | 		ret = -EBUSY; | ||||||
| 		goto out_unlock; | 		goto out_unlock; | ||||||
| 	} | 	} | ||||||
| 	rcu_assign_pointer(nf_expect_event_cb, new); | 	RCU_INIT_POINTER(nf_expect_event_cb, new); | ||||||
| 	mutex_unlock(&nf_ct_ecache_mutex); | 	mutex_unlock(&nf_ct_ecache_mutex); | ||||||
| 	return ret; | 	return ret; | ||||||
| 
 | 
 | ||||||
|  | @ -147,7 +147,7 @@ void nf_ct_expect_unregister_notifier(struct nf_exp_event_notifier *new) | ||||||
| 	notify = rcu_dereference_protected(nf_expect_event_cb, | 	notify = rcu_dereference_protected(nf_expect_event_cb, | ||||||
| 					   lockdep_is_held(&nf_ct_ecache_mutex)); | 					   lockdep_is_held(&nf_ct_ecache_mutex)); | ||||||
| 	BUG_ON(notify != new); | 	BUG_ON(notify != new); | ||||||
| 	rcu_assign_pointer(nf_expect_event_cb, NULL); | 	RCU_INIT_POINTER(nf_expect_event_cb, NULL); | ||||||
| 	mutex_unlock(&nf_ct_ecache_mutex); | 	mutex_unlock(&nf_ct_ecache_mutex); | ||||||
| } | } | ||||||
| EXPORT_SYMBOL_GPL(nf_ct_expect_unregister_notifier); | EXPORT_SYMBOL_GPL(nf_ct_expect_unregister_notifier); | ||||||
|  |  | ||||||
|  | @ -169,7 +169,7 @@ int nf_ct_extend_register(struct nf_ct_ext_type *type) | ||||||
| 	   before updating alloc_size */ | 	   before updating alloc_size */ | ||||||
| 	type->alloc_size = ALIGN(sizeof(struct nf_ct_ext), type->align) | 	type->alloc_size = ALIGN(sizeof(struct nf_ct_ext), type->align) | ||||||
| 			   + type->len; | 			   + type->len; | ||||||
| 	rcu_assign_pointer(nf_ct_ext_types[type->id], type); | 	RCU_INIT_POINTER(nf_ct_ext_types[type->id], type); | ||||||
| 	update_alloc_size(type); | 	update_alloc_size(type); | ||||||
| out: | out: | ||||||
| 	mutex_unlock(&nf_ct_ext_type_mutex); | 	mutex_unlock(&nf_ct_ext_type_mutex); | ||||||
|  | @ -181,7 +181,7 @@ EXPORT_SYMBOL_GPL(nf_ct_extend_register); | ||||||
| void nf_ct_extend_unregister(struct nf_ct_ext_type *type) | void nf_ct_extend_unregister(struct nf_ct_ext_type *type) | ||||||
| { | { | ||||||
| 	mutex_lock(&nf_ct_ext_type_mutex); | 	mutex_lock(&nf_ct_ext_type_mutex); | ||||||
| 	rcu_assign_pointer(nf_ct_ext_types[type->id], NULL); | 	RCU_INIT_POINTER(nf_ct_ext_types[type->id], NULL); | ||||||
| 	update_alloc_size(type); | 	update_alloc_size(type); | ||||||
| 	mutex_unlock(&nf_ct_ext_type_mutex); | 	mutex_unlock(&nf_ct_ext_type_mutex); | ||||||
| 	rcu_barrier(); /* Wait for completion of call_rcu()'s */ | 	rcu_barrier(); /* Wait for completion of call_rcu()'s */ | ||||||
|  |  | ||||||
|  | @ -131,7 +131,7 @@ int __nf_ct_try_assign_helper(struct nf_conn *ct, struct nf_conn *tmpl, | ||||||
| 		helper = __nf_ct_helper_find(&ct->tuplehash[IP_CT_DIR_REPLY].tuple); | 		helper = __nf_ct_helper_find(&ct->tuplehash[IP_CT_DIR_REPLY].tuple); | ||||||
| 	if (helper == NULL) { | 	if (helper == NULL) { | ||||||
| 		if (help) | 		if (help) | ||||||
| 			rcu_assign_pointer(help->helper, NULL); | 			RCU_INIT_POINTER(help->helper, NULL); | ||||||
| 		goto out; | 		goto out; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -145,7 +145,7 @@ int __nf_ct_try_assign_helper(struct nf_conn *ct, struct nf_conn *tmpl, | ||||||
| 		memset(&help->help, 0, sizeof(help->help)); | 		memset(&help->help, 0, sizeof(help->help)); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(help->helper, helper); | 	RCU_INIT_POINTER(help->helper, helper); | ||||||
| out: | out: | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
|  | @ -162,7 +162,7 @@ static inline int unhelp(struct nf_conntrack_tuple_hash *i, | ||||||
| 			lockdep_is_held(&nf_conntrack_lock) | 			lockdep_is_held(&nf_conntrack_lock) | ||||||
| 			) == me) { | 			) == me) { | ||||||
| 		nf_conntrack_event(IPCT_HELPER, ct); | 		nf_conntrack_event(IPCT_HELPER, ct); | ||||||
| 		rcu_assign_pointer(help->helper, NULL); | 		RCU_INIT_POINTER(help->helper, NULL); | ||||||
| 	} | 	} | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1125,7 +1125,7 @@ ctnetlink_change_helper(struct nf_conn *ct, const struct nlattr * const cda[]) | ||||||
| 		if (help && help->helper) { | 		if (help && help->helper) { | ||||||
| 			/* we had a helper before ... */ | 			/* we had a helper before ... */ | ||||||
| 			nf_ct_remove_expectations(ct); | 			nf_ct_remove_expectations(ct); | ||||||
| 			rcu_assign_pointer(help->helper, NULL); | 			RCU_INIT_POINTER(help->helper, NULL); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return 0; | 		return 0; | ||||||
|  | @ -1163,7 +1163,7 @@ ctnetlink_change_helper(struct nf_conn *ct, const struct nlattr * const cda[]) | ||||||
| 		return -EOPNOTSUPP; | 		return -EOPNOTSUPP; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(help->helper, helper); | 	RCU_INIT_POINTER(help->helper, helper); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  | @ -1386,7 +1386,7 @@ ctnetlink_create_conntrack(struct net *net, u16 zone, | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			/* not in hash table yet so not strictly necessary */ | 			/* not in hash table yet so not strictly necessary */ | ||||||
| 			rcu_assign_pointer(help->helper, helper); | 			RCU_INIT_POINTER(help->helper, helper); | ||||||
| 		} | 		} | ||||||
| 	} else { | 	} else { | ||||||
| 		/* try an implicit helper assignation */ | 		/* try an implicit helper assignation */ | ||||||
|  |  | ||||||
|  | @ -55,7 +55,7 @@ int nf_log_register(u_int8_t pf, struct nf_logger *logger) | ||||||
| 		llog = rcu_dereference_protected(nf_loggers[pf], | 		llog = rcu_dereference_protected(nf_loggers[pf], | ||||||
| 						 lockdep_is_held(&nf_log_mutex)); | 						 lockdep_is_held(&nf_log_mutex)); | ||||||
| 		if (llog == NULL) | 		if (llog == NULL) | ||||||
| 			rcu_assign_pointer(nf_loggers[pf], logger); | 			RCU_INIT_POINTER(nf_loggers[pf], logger); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	mutex_unlock(&nf_log_mutex); | 	mutex_unlock(&nf_log_mutex); | ||||||
|  | @ -74,7 +74,7 @@ void nf_log_unregister(struct nf_logger *logger) | ||||||
| 		c_logger = rcu_dereference_protected(nf_loggers[i], | 		c_logger = rcu_dereference_protected(nf_loggers[i], | ||||||
| 						     lockdep_is_held(&nf_log_mutex)); | 						     lockdep_is_held(&nf_log_mutex)); | ||||||
| 		if (c_logger == logger) | 		if (c_logger == logger) | ||||||
| 			rcu_assign_pointer(nf_loggers[i], NULL); | 			RCU_INIT_POINTER(nf_loggers[i], NULL); | ||||||
| 		list_del(&logger->list[i]); | 		list_del(&logger->list[i]); | ||||||
| 	} | 	} | ||||||
| 	mutex_unlock(&nf_log_mutex); | 	mutex_unlock(&nf_log_mutex); | ||||||
|  | @ -92,7 +92,7 @@ int nf_log_bind_pf(u_int8_t pf, const struct nf_logger *logger) | ||||||
| 		mutex_unlock(&nf_log_mutex); | 		mutex_unlock(&nf_log_mutex); | ||||||
| 		return -ENOENT; | 		return -ENOENT; | ||||||
| 	} | 	} | ||||||
| 	rcu_assign_pointer(nf_loggers[pf], logger); | 	RCU_INIT_POINTER(nf_loggers[pf], logger); | ||||||
| 	mutex_unlock(&nf_log_mutex); | 	mutex_unlock(&nf_log_mutex); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  | @ -103,7 +103,7 @@ void nf_log_unbind_pf(u_int8_t pf) | ||||||
| 	if (pf >= ARRAY_SIZE(nf_loggers)) | 	if (pf >= ARRAY_SIZE(nf_loggers)) | ||||||
| 		return; | 		return; | ||||||
| 	mutex_lock(&nf_log_mutex); | 	mutex_lock(&nf_log_mutex); | ||||||
| 	rcu_assign_pointer(nf_loggers[pf], NULL); | 	RCU_INIT_POINTER(nf_loggers[pf], NULL); | ||||||
| 	mutex_unlock(&nf_log_mutex); | 	mutex_unlock(&nf_log_mutex); | ||||||
| } | } | ||||||
| EXPORT_SYMBOL(nf_log_unbind_pf); | EXPORT_SYMBOL(nf_log_unbind_pf); | ||||||
|  | @ -250,7 +250,7 @@ static int nf_log_proc_dostring(ctl_table *table, int write, | ||||||
| 			mutex_unlock(&nf_log_mutex); | 			mutex_unlock(&nf_log_mutex); | ||||||
| 			return -ENOENT; | 			return -ENOENT; | ||||||
| 		} | 		} | ||||||
| 		rcu_assign_pointer(nf_loggers[tindex], logger); | 		RCU_INIT_POINTER(nf_loggers[tindex], logger); | ||||||
| 		mutex_unlock(&nf_log_mutex); | 		mutex_unlock(&nf_log_mutex); | ||||||
| 	} else { | 	} else { | ||||||
| 		mutex_lock(&nf_log_mutex); | 		mutex_lock(&nf_log_mutex); | ||||||
|  |  | ||||||
|  | @ -40,7 +40,7 @@ int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh) | ||||||
| 	else if (old) | 	else if (old) | ||||||
| 		ret = -EBUSY; | 		ret = -EBUSY; | ||||||
| 	else { | 	else { | ||||||
| 		rcu_assign_pointer(queue_handler[pf], qh); | 		RCU_INIT_POINTER(queue_handler[pf], qh); | ||||||
| 		ret = 0; | 		ret = 0; | ||||||
| 	} | 	} | ||||||
| 	mutex_unlock(&queue_handler_mutex); | 	mutex_unlock(&queue_handler_mutex); | ||||||
|  | @ -65,7 +65,7 @@ int nf_unregister_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(queue_handler[pf], NULL); | 	RCU_INIT_POINTER(queue_handler[pf], NULL); | ||||||
| 	mutex_unlock(&queue_handler_mutex); | 	mutex_unlock(&queue_handler_mutex); | ||||||
| 
 | 
 | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
|  | @ -84,7 +84,7 @@ void nf_unregister_queue_handlers(const struct nf_queue_handler *qh) | ||||||
| 				queue_handler[pf], | 				queue_handler[pf], | ||||||
| 				lockdep_is_held(&queue_handler_mutex) | 				lockdep_is_held(&queue_handler_mutex) | ||||||
| 				) == qh) | 				) == qh) | ||||||
| 			rcu_assign_pointer(queue_handler[pf], NULL); | 			RCU_INIT_POINTER(queue_handler[pf], NULL); | ||||||
| 	} | 	} | ||||||
| 	mutex_unlock(&queue_handler_mutex); | 	mutex_unlock(&queue_handler_mutex); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -59,7 +59,7 @@ int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n) | ||||||
| 		nfnl_unlock(); | 		nfnl_unlock(); | ||||||
| 		return -EBUSY; | 		return -EBUSY; | ||||||
| 	} | 	} | ||||||
| 	rcu_assign_pointer(subsys_table[n->subsys_id], n); | 	RCU_INIT_POINTER(subsys_table[n->subsys_id], n); | ||||||
| 	nfnl_unlock(); | 	nfnl_unlock(); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  | @ -210,7 +210,7 @@ static int __net_init nfnetlink_net_init(struct net *net) | ||||||
| 	if (!nfnl) | 	if (!nfnl) | ||||||
| 		return -ENOMEM; | 		return -ENOMEM; | ||||||
| 	net->nfnl_stash = nfnl; | 	net->nfnl_stash = nfnl; | ||||||
| 	rcu_assign_pointer(net->nfnl, nfnl); | 	RCU_INIT_POINTER(net->nfnl, nfnl); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -219,7 +219,7 @@ static void __net_exit nfnetlink_net_exit_batch(struct list_head *net_exit_list) | ||||||
| 	struct net *net; | 	struct net *net; | ||||||
| 
 | 
 | ||||||
| 	list_for_each_entry(net, net_exit_list, exit_list) | 	list_for_each_entry(net, net_exit_list, exit_list) | ||||||
| 		rcu_assign_pointer(net->nfnl, NULL); | 		RCU_INIT_POINTER(net->nfnl, NULL); | ||||||
| 	synchronize_net(); | 	synchronize_net(); | ||||||
| 	list_for_each_entry(net, net_exit_list, exit_list) | 	list_for_each_entry(net, net_exit_list, exit_list) | ||||||
| 		netlink_kernel_release(net->nfnl_stash); | 		netlink_kernel_release(net->nfnl_stash); | ||||||
|  |  | ||||||
|  | @ -282,7 +282,7 @@ int __init netlbl_domhsh_init(u32 size) | ||||||
| 		INIT_LIST_HEAD(&hsh_tbl->tbl[iter]); | 		INIT_LIST_HEAD(&hsh_tbl->tbl[iter]); | ||||||
| 
 | 
 | ||||||
| 	spin_lock(&netlbl_domhsh_lock); | 	spin_lock(&netlbl_domhsh_lock); | ||||||
| 	rcu_assign_pointer(netlbl_domhsh, hsh_tbl); | 	RCU_INIT_POINTER(netlbl_domhsh, hsh_tbl); | ||||||
| 	spin_unlock(&netlbl_domhsh_lock); | 	spin_unlock(&netlbl_domhsh_lock); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  | @ -330,7 +330,7 @@ int netlbl_domhsh_add(struct netlbl_dom_map *entry, | ||||||
| 				    &rcu_dereference(netlbl_domhsh)->tbl[bkt]); | 				    &rcu_dereference(netlbl_domhsh)->tbl[bkt]); | ||||||
| 		} else { | 		} else { | ||||||
| 			INIT_LIST_HEAD(&entry->list); | 			INIT_LIST_HEAD(&entry->list); | ||||||
| 			rcu_assign_pointer(netlbl_domhsh_def, entry); | 			RCU_INIT_POINTER(netlbl_domhsh_def, entry); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (entry->type == NETLBL_NLTYPE_ADDRSELECT) { | 		if (entry->type == NETLBL_NLTYPE_ADDRSELECT) { | ||||||
|  | @ -451,7 +451,7 @@ int netlbl_domhsh_remove_entry(struct netlbl_dom_map *entry, | ||||||
| 		if (entry != rcu_dereference(netlbl_domhsh_def)) | 		if (entry != rcu_dereference(netlbl_domhsh_def)) | ||||||
| 			list_del_rcu(&entry->list); | 			list_del_rcu(&entry->list); | ||||||
| 		else | 		else | ||||||
| 			rcu_assign_pointer(netlbl_domhsh_def, NULL); | 			RCU_INIT_POINTER(netlbl_domhsh_def, NULL); | ||||||
| 	} else | 	} else | ||||||
| 		ret_val = -ENOENT; | 		ret_val = -ENOENT; | ||||||
| 	spin_unlock(&netlbl_domhsh_lock); | 	spin_unlock(&netlbl_domhsh_lock); | ||||||
|  |  | ||||||
|  | @ -354,7 +354,7 @@ static struct netlbl_unlhsh_iface *netlbl_unlhsh_add_iface(int ifindex) | ||||||
| 		INIT_LIST_HEAD(&iface->list); | 		INIT_LIST_HEAD(&iface->list); | ||||||
| 		if (netlbl_unlhsh_rcu_deref(netlbl_unlhsh_def) != NULL) | 		if (netlbl_unlhsh_rcu_deref(netlbl_unlhsh_def) != NULL) | ||||||
| 			goto add_iface_failure; | 			goto add_iface_failure; | ||||||
| 		rcu_assign_pointer(netlbl_unlhsh_def, iface); | 		RCU_INIT_POINTER(netlbl_unlhsh_def, iface); | ||||||
| 	} | 	} | ||||||
| 	spin_unlock(&netlbl_unlhsh_lock); | 	spin_unlock(&netlbl_unlhsh_lock); | ||||||
| 
 | 
 | ||||||
|  | @ -621,7 +621,7 @@ static void netlbl_unlhsh_condremove_iface(struct netlbl_unlhsh_iface *iface) | ||||||
| 	if (iface->ifindex > 0) | 	if (iface->ifindex > 0) | ||||||
| 		list_del_rcu(&iface->list); | 		list_del_rcu(&iface->list); | ||||||
| 	else | 	else | ||||||
| 		rcu_assign_pointer(netlbl_unlhsh_def, NULL); | 		RCU_INIT_POINTER(netlbl_unlhsh_def, NULL); | ||||||
| 	spin_unlock(&netlbl_unlhsh_lock); | 	spin_unlock(&netlbl_unlhsh_lock); | ||||||
| 
 | 
 | ||||||
| 	call_rcu(&iface->rcu, netlbl_unlhsh_free_iface); | 	call_rcu(&iface->rcu, netlbl_unlhsh_free_iface); | ||||||
|  | @ -1449,7 +1449,7 @@ int __init netlbl_unlabel_init(u32 size) | ||||||
| 
 | 
 | ||||||
| 	rcu_read_lock(); | 	rcu_read_lock(); | ||||||
| 	spin_lock(&netlbl_unlhsh_lock); | 	spin_lock(&netlbl_unlhsh_lock); | ||||||
| 	rcu_assign_pointer(netlbl_unlhsh, hsh_tbl); | 	RCU_INIT_POINTER(netlbl_unlhsh, hsh_tbl); | ||||||
| 	spin_unlock(&netlbl_unlhsh_lock); | 	spin_unlock(&netlbl_unlhsh_lock); | ||||||
| 	rcu_read_unlock(); | 	rcu_read_unlock(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -480,7 +480,7 @@ int __init_or_module phonet_proto_register(unsigned int protocol, | ||||||
| 	if (proto_tab[protocol]) | 	if (proto_tab[protocol]) | ||||||
| 		err = -EBUSY; | 		err = -EBUSY; | ||||||
| 	else | 	else | ||||||
| 		rcu_assign_pointer(proto_tab[protocol], pp); | 		RCU_INIT_POINTER(proto_tab[protocol], pp); | ||||||
| 	mutex_unlock(&proto_tab_lock); | 	mutex_unlock(&proto_tab_lock); | ||||||
| 
 | 
 | ||||||
| 	return err; | 	return err; | ||||||
|  | @ -491,7 +491,7 @@ void phonet_proto_unregister(unsigned int protocol, struct phonet_protocol *pp) | ||||||
| { | { | ||||||
| 	mutex_lock(&proto_tab_lock); | 	mutex_lock(&proto_tab_lock); | ||||||
| 	BUG_ON(proto_tab[protocol] != pp); | 	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); | 	mutex_unlock(&proto_tab_lock); | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
| 	proto_unregister(pp->prot); | 	proto_unregister(pp->prot); | ||||||
|  |  | ||||||
|  | @ -276,7 +276,7 @@ static void phonet_route_autodel(struct net_device *dev) | ||||||
| 	mutex_lock(&pnn->routes.lock); | 	mutex_lock(&pnn->routes.lock); | ||||||
| 	for (i = 0; i < 64; i++) | 	for (i = 0; i < 64; i++) | ||||||
| 		if (dev == pnn->routes.table[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); | 			set_bit(i, deleted); | ||||||
| 		} | 		} | ||||||
| 	mutex_unlock(&pnn->routes.lock); | 	mutex_unlock(&pnn->routes.lock); | ||||||
|  | @ -390,7 +390,7 @@ int phonet_route_add(struct net_device *dev, u8 daddr) | ||||||
| 	daddr = daddr >> 2; | 	daddr = daddr >> 2; | ||||||
| 	mutex_lock(&routes->lock); | 	mutex_lock(&routes->lock); | ||||||
| 	if (routes->table[daddr] == NULL) { | 	if (routes->table[daddr] == NULL) { | ||||||
| 		rcu_assign_pointer(routes->table[daddr], dev); | 		RCU_INIT_POINTER(routes->table[daddr], dev); | ||||||
| 		dev_hold(dev); | 		dev_hold(dev); | ||||||
| 		err = 0; | 		err = 0; | ||||||
| 	} | 	} | ||||||
|  | @ -406,7 +406,7 @@ int phonet_route_del(struct net_device *dev, u8 daddr) | ||||||
| 	daddr = daddr >> 2; | 	daddr = daddr >> 2; | ||||||
| 	mutex_lock(&routes->lock); | 	mutex_lock(&routes->lock); | ||||||
| 	if (dev == routes->table[daddr]) | 	if (dev == routes->table[daddr]) | ||||||
| 		rcu_assign_pointer(routes->table[daddr], NULL); | 		RCU_INIT_POINTER(routes->table[daddr], NULL); | ||||||
| 	else | 	else | ||||||
| 		dev = NULL; | 		dev = NULL; | ||||||
| 	mutex_unlock(&routes->lock); | 	mutex_unlock(&routes->lock); | ||||||
|  |  | ||||||
|  | @ -679,7 +679,7 @@ int pn_sock_bind_res(struct sock *sk, u8 res) | ||||||
| 	mutex_lock(&resource_mutex); | 	mutex_lock(&resource_mutex); | ||||||
| 	if (pnres.sk[res] == NULL) { | 	if (pnres.sk[res] == NULL) { | ||||||
| 		sock_hold(sk); | 		sock_hold(sk); | ||||||
| 		rcu_assign_pointer(pnres.sk[res], sk); | 		RCU_INIT_POINTER(pnres.sk[res], sk); | ||||||
| 		ret = 0; | 		ret = 0; | ||||||
| 	} | 	} | ||||||
| 	mutex_unlock(&resource_mutex); | 	mutex_unlock(&resource_mutex); | ||||||
|  | @ -695,7 +695,7 @@ int pn_sock_unbind_res(struct sock *sk, u8 res) | ||||||
| 
 | 
 | ||||||
| 	mutex_lock(&resource_mutex); | 	mutex_lock(&resource_mutex); | ||||||
| 	if (pnres.sk[res] == sk) { | 	if (pnres.sk[res] == sk) { | ||||||
| 		rcu_assign_pointer(pnres.sk[res], NULL); | 		RCU_INIT_POINTER(pnres.sk[res], NULL); | ||||||
| 		ret = 0; | 		ret = 0; | ||||||
| 	} | 	} | ||||||
| 	mutex_unlock(&resource_mutex); | 	mutex_unlock(&resource_mutex); | ||||||
|  | @ -714,7 +714,7 @@ void pn_sock_unbind_all_res(struct sock *sk) | ||||||
| 	mutex_lock(&resource_mutex); | 	mutex_lock(&resource_mutex); | ||||||
| 	for (res = 0; res < 256; res++) { | 	for (res = 0; res < 256; res++) { | ||||||
| 		if (pnres.sk[res] == sk) { | 		if (pnres.sk[res] == sk) { | ||||||
| 			rcu_assign_pointer(pnres.sk[res], NULL); | 			RCU_INIT_POINTER(pnres.sk[res], NULL); | ||||||
| 			match++; | 			match++; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -2463,7 +2463,7 @@ int sock_register(const struct net_proto_family *ops) | ||||||
| 				      lockdep_is_held(&net_family_lock))) | 				      lockdep_is_held(&net_family_lock))) | ||||||
| 		err = -EEXIST; | 		err = -EEXIST; | ||||||
| 	else { | 	else { | ||||||
| 		rcu_assign_pointer(net_families[ops->family], ops); | 		RCU_INIT_POINTER(net_families[ops->family], ops); | ||||||
| 		err = 0; | 		err = 0; | ||||||
| 	} | 	} | ||||||
| 	spin_unlock(&net_family_lock); | 	spin_unlock(&net_family_lock); | ||||||
|  | @ -2491,7 +2491,7 @@ void sock_unregister(int family) | ||||||
| 	BUG_ON(family < 0 || family >= NPROTO); | 	BUG_ON(family < 0 || family >= NPROTO); | ||||||
| 
 | 
 | ||||||
| 	spin_lock(&net_family_lock); | 	spin_lock(&net_family_lock); | ||||||
| 	rcu_assign_pointer(net_families[family], NULL); | 	RCU_INIT_POINTER(net_families[family], NULL); | ||||||
| 	spin_unlock(&net_family_lock); | 	spin_unlock(&net_family_lock); | ||||||
| 
 | 
 | ||||||
| 	synchronize_rcu(); | 	synchronize_rcu(); | ||||||
|  |  | ||||||
|  | @ -122,7 +122,7 @@ gss_cred_set_ctx(struct rpc_cred *cred, struct gss_cl_ctx *ctx) | ||||||
| 	if (!test_bit(RPCAUTH_CRED_NEW, &cred->cr_flags)) | 	if (!test_bit(RPCAUTH_CRED_NEW, &cred->cr_flags)) | ||||||
| 		return; | 		return; | ||||||
| 	gss_get_ctx(ctx); | 	gss_get_ctx(ctx); | ||||||
| 	rcu_assign_pointer(gss_cred->gc_ctx, ctx); | 	RCU_INIT_POINTER(gss_cred->gc_ctx, ctx); | ||||||
| 	set_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags); | 	set_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags); | ||||||
| 	smp_mb__before_clear_bit(); | 	smp_mb__before_clear_bit(); | ||||||
| 	clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags); | 	clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags); | ||||||
|  | @ -970,7 +970,7 @@ gss_destroy_nullcred(struct rpc_cred *cred) | ||||||
| 	struct gss_auth *gss_auth = container_of(cred->cr_auth, struct gss_auth, rpc_auth); | 	struct gss_auth *gss_auth = container_of(cred->cr_auth, struct gss_auth, rpc_auth); | ||||||
| 	struct gss_cl_ctx *ctx = gss_cred->gc_ctx; | 	struct gss_cl_ctx *ctx = gss_cred->gc_ctx; | ||||||
| 
 | 
 | ||||||
| 	rcu_assign_pointer(gss_cred->gc_ctx, NULL); | 	RCU_INIT_POINTER(gss_cred->gc_ctx, NULL); | ||||||
| 	call_rcu(&cred->cr_rcu, gss_free_cred_callback); | 	call_rcu(&cred->cr_rcu, gss_free_cred_callback); | ||||||
| 	if (ctx) | 	if (ctx) | ||||||
| 		gss_put_ctx(ctx); | 		gss_put_ctx(ctx); | ||||||
|  |  | ||||||
|  | @ -2927,7 +2927,7 @@ static int __net_init xfrm_user_net_init(struct net *net) | ||||||
| 	if (nlsk == NULL) | 	if (nlsk == NULL) | ||||||
| 		return -ENOMEM; | 		return -ENOMEM; | ||||||
| 	net->xfrm.nlsk_stash = nlsk; /* Don't set to NULL */ | 	net->xfrm.nlsk_stash = nlsk; /* Don't set to NULL */ | ||||||
| 	rcu_assign_pointer(net->xfrm.nlsk, nlsk); | 	RCU_INIT_POINTER(net->xfrm.nlsk, nlsk); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -2935,7 +2935,7 @@ static void __net_exit xfrm_user_net_exit(struct list_head *net_exit_list) | ||||||
| { | { | ||||||
| 	struct net *net; | 	struct net *net; | ||||||
| 	list_for_each_entry(net, net_exit_list, exit_list) | 	list_for_each_entry(net, net_exit_list, exit_list) | ||||||
| 		rcu_assign_pointer(net->xfrm.nlsk, NULL); | 		RCU_INIT_POINTER(net->xfrm.nlsk, NULL); | ||||||
| 	synchronize_net(); | 	synchronize_net(); | ||||||
| 	list_for_each_entry(net, net_exit_list, exit_list) | 	list_for_each_entry(net, net_exit_list, exit_list) | ||||||
| 		netlink_kernel_release(net->xfrm.nlsk_stash); | 		netlink_kernel_release(net->xfrm.nlsk_stash); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Stephen Hemminger
						Stephen Hemminger