commit cf778b00e96df6d64f8e21b8395d1f8a859ecdc7 Author: Eric Dumazet Date: Thu Jan 12 04:41:32 2012 +0000 net: reintroduce missing rcu_assign_pointer() calls commit a9b3cd7f32 (rcu: convert uses of rcu_assign_pointer(x, NULL) to RCU_INIT_POINTER) did a lot of incorrect changes, since it did a complete conversion of rcu_assign_pointer(x, y) to RCU_INIT_POINTER(x, y). We miss needed barriers, even on x86, when y is not NULL. Signed-off-by: Eric Dumazet CC: Stephen Hemminger CC: Paul E. McKenney Signed-off-by: David S. Miller diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/core/netpoll.c linux-3.2.net/net/core/netpoll.c --- linux-3.2.noarch/net/core/netpoll.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/core/netpoll.c 2012-01-20 16:50:26.761797929 -0500 @@ -763,7 +763,7 @@ int __netpoll_setup(struct netpoll *np) } /* last thing to do is link it to the net device structure */ - RCU_INIT_POINTER(ndev->npinfo, npinfo); + rcu_assign_pointer(ndev->npinfo, npinfo); return 0; diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/core/net-sysfs.c linux-3.2.net/net/core/net-sysfs.c --- linux-3.2.noarch/net/core/net-sysfs.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/core/net-sysfs.c 2012-01-20 16:50:26.730798974 -0500 @@ -990,9 +990,9 @@ static ssize_t store_xps_map(struct netd nonempty = 1; } - if (nonempty) - RCU_INIT_POINTER(dev->xps_maps, new_dev_maps); - else { + if (nonempty) { + rcu_assign_pointer(dev->xps_maps, new_dev_maps); + } else { kfree(new_dev_maps); RCU_INIT_POINTER(dev->xps_maps, NULL); } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/decnet/dn_dev.c linux-3.2.net/net/decnet/dn_dev.c --- linux-3.2.noarch/net/decnet/dn_dev.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/decnet/dn_dev.c 2012-01-20 16:50:26.793796851 -0500 @@ -388,7 +388,7 @@ static int dn_dev_insert_ifa(struct dn_d } ifa->ifa_next = dn_db->ifa_list; - RCU_INIT_POINTER(dn_db->ifa_list, ifa); + rcu_assign_pointer(dn_db->ifa_list, ifa); dn_ifaddr_notify(RTM_NEWADDR, ifa); blocking_notifier_call_chain(&dnaddr_chain, NETDEV_UP, ifa); @@ -1093,7 +1093,7 @@ static struct dn_dev *dn_dev_create(stru memcpy(&dn_db->parms, p, sizeof(struct dn_dev_parms)); - RCU_INIT_POINTER(dev->dn_ptr, dn_db); + rcu_assign_pointer(dev->dn_ptr, dn_db); dn_db->dev = dev; init_timer(&dn_db->timer); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/devinet.c linux-3.2.net/net/ipv4/devinet.c --- linux-3.2.noarch/net/ipv4/devinet.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv4/devinet.c 2012-01-20 16:50:26.829795637 -0500 @@ -258,7 +258,7 @@ static struct in_device *inetdev_init(st ip_mc_up(in_dev); /* we can receive as soon as ip_ptr is set -- do this last */ - RCU_INIT_POINTER(dev->ip_ptr, in_dev); + rcu_assign_pointer(dev->ip_ptr, in_dev); out: return in_dev; out_kfree: diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/fib_trie.c linux-3.2.net/net/ipv4/fib_trie.c --- linux-3.2.noarch/net/ipv4/fib_trie.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv4/fib_trie.c 2012-01-20 16:50:26.865794425 -0500 @@ -205,7 +205,7 @@ static inline struct tnode *node_parent_ return (struct tnode *)(parent & ~NODE_TYPE_MASK); } -/* Same as RCU_INIT_POINTER +/* Same as rcu_assign_pointer * but that macro() assumes that value is a pointer. */ static inline void node_set_parent(struct rt_trie_node *node, struct tnode *ptr) @@ -529,7 +529,7 @@ static void tnode_put_child_reorg(struct if (n) node_set_parent(n, tn); - RCU_INIT_POINTER(tn->child[i], n); + rcu_assign_pointer(tn->child[i], n); } #define MAX_WORK 10 @@ -1015,7 +1015,7 @@ static void trie_rebalance(struct trie * tp = node_parent((struct rt_trie_node *) tn); if (!tp) - RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn); + rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn); tnode_free_flush(); if (!tp) @@ -1027,7 +1027,7 @@ static void trie_rebalance(struct trie * if (IS_TNODE(tn)) tn = (struct tnode *)resize(t, (struct tnode *)tn); - RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn); + rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn); tnode_free_flush(); } @@ -1164,7 +1164,7 @@ static struct list_head *fib_insert_node put_child(t, (struct tnode *)tp, cindex, (struct rt_trie_node *)tn); } else { - RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn); + rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn); tp = tn; } } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/igmp.c linux-3.2.net/net/ipv4/igmp.c --- linux-3.2.noarch/net/ipv4/igmp.c 2012-01-20 16:22:44.923961882 -0500 +++ linux-3.2.net/net/ipv4/igmp.c 2012-01-20 16:50:26.898793315 -0500 @@ -1244,7 +1244,7 @@ void ip_mc_inc_group(struct in_device *i im->next_rcu = in_dev->mc_list; in_dev->mc_count++; - RCU_INIT_POINTER(in_dev->mc_list, im); + rcu_assign_pointer(in_dev->mc_list, im); #ifdef CONFIG_IP_MULTICAST igmpv3_del_delrec(in_dev, im->multiaddr); @@ -1816,7 +1816,7 @@ int ip_mc_join_group(struct sock *sk , s iml->next_rcu = inet->mc_list; iml->sflist = NULL; iml->sfmode = MCAST_EXCLUDE; - RCU_INIT_POINTER(inet->mc_list, iml); + rcu_assign_pointer(inet->mc_list, iml); ip_mc_inc_group(in_dev, addr); err = 0; done: @@ -2003,7 +2003,7 @@ int ip_mc_source(int add, int omode, str atomic_sub(IP_SFLSIZE(psl->sl_max), &sk->sk_omem_alloc); kfree_rcu(psl, rcu); } - RCU_INIT_POINTER(pmc->sflist, newpsl); + rcu_assign_pointer(pmc->sflist, newpsl); psl = newpsl; } rv = 1; /* > 0 for insert logic below if sl_count is 0 */ @@ -2106,7 +2106,7 @@ int ip_mc_msfilter(struct sock *sk, stru } else (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, 0, NULL, 0); - RCU_INIT_POINTER(pmc->sflist, newpsl); + rcu_assign_pointer(pmc->sflist, newpsl); pmc->sfmode = msf->imsf_fmode; err = 0; done: diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/ipip.c linux-3.2.net/net/ipv4/ipip.c --- linux-3.2.noarch/net/ipv4/ipip.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv4/ipip.c 2012-01-20 16:50:26.916792707 -0500 @@ -231,7 +231,7 @@ static void ipip_tunnel_unlink(struct ip (iter = rtnl_dereference(*tp)) != NULL; tp = &iter->next) { if (t == iter) { - RCU_INIT_POINTER(*tp, t->next); + rcu_assign_pointer(*tp, t->next); break; } } @@ -241,8 +241,8 @@ static void ipip_tunnel_link(struct ipip { struct ip_tunnel __rcu **tp = ipip_bucket(ipn, t); - RCU_INIT_POINTER(t->next, rtnl_dereference(*tp)); - RCU_INIT_POINTER(*tp, t); + rcu_assign_pointer(t->next, rtnl_dereference(*tp)); + rcu_assign_pointer(*tp, t); } static struct ip_tunnel * ipip_tunnel_locate(struct net *net, @@ -792,7 +792,7 @@ static int __net_init ipip_fb_tunnel_ini return -ENOMEM; dev_hold(dev); - RCU_INIT_POINTER(ipn->tunnels_wc[0], tunnel); + rcu_assign_pointer(ipn->tunnels_wc[0], tunnel); return 0; } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv4/ipmr.c linux-3.2.net/net/ipv4/ipmr.c --- linux-3.2.noarch/net/ipv4/ipmr.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv4/ipmr.c 2012-01-20 16:50:26.946791698 -0500 @@ -1225,7 +1225,7 @@ int ip_mroute_setsockopt(struct sock *sk ret = ip_ra_control(sk, 1, mrtsock_destruct); if (ret == 0) { - RCU_INIT_POINTER(mrt->mroute_sk, sk); + rcu_assign_pointer(mrt->mroute_sk, sk); IPV4_DEVCONF_ALL(net, MC_FORWARDING)++; } rtnl_unlock(); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/addrconf.c linux-3.2.net/net/ipv6/addrconf.c --- linux-3.2.noarch/net/ipv6/addrconf.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv6/addrconf.c 2012-01-20 16:50:26.977790653 -0500 @@ -429,7 +429,7 @@ static struct inet6_dev * ipv6_add_dev(s ndev->tstamp = jiffies; addrconf_sysctl_register(ndev); /* protected by rtnl_lock */ - RCU_INIT_POINTER(dev->ip6_ptr, ndev); + rcu_assign_pointer(dev->ip6_ptr, ndev); /* Join all-node multicast group */ ipv6_dev_mc_inc(dev, &in6addr_linklocal_allnodes); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/ip6_tunnel.c linux-3.2.net/net/ipv6/ip6_tunnel.c --- linux-3.2.noarch/net/ipv6/ip6_tunnel.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv6/ip6_tunnel.c 2012-01-20 16:50:27.004789743 -0500 @@ -218,8 +218,8 @@ ip6_tnl_link(struct ip6_tnl_net *ip6n, s { struct ip6_tnl __rcu **tp = ip6_tnl_bucket(ip6n, &t->parms); - RCU_INIT_POINTER(t->next , rtnl_dereference(*tp)); - RCU_INIT_POINTER(*tp, t); + rcu_assign_pointer(t->next , rtnl_dereference(*tp)); + rcu_assign_pointer(*tp, t); } /** @@ -237,7 +237,7 @@ ip6_tnl_unlink(struct ip6_tnl_net *ip6n, (iter = rtnl_dereference(*tp)) != NULL; tp = &iter->next) { if (t == iter) { - RCU_INIT_POINTER(*tp, t->next); + rcu_assign_pointer(*tp, t->next); break; } } @@ -1450,7 +1450,7 @@ static int __net_init ip6_fb_tnl_dev_ini t->parms.proto = IPPROTO_IPV6; dev_hold(dev); - RCU_INIT_POINTER(ip6n->tnls_wc[0], t); + rcu_assign_pointer(ip6n->tnls_wc[0], t); return 0; } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/raw.c linux-3.2.net/net/ipv6/raw.c --- linux-3.2.noarch/net/ipv6/raw.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv6/raw.c 2012-01-20 16:50:27.022789138 -0500 @@ -131,7 +131,7 @@ static mh_filter_t __rcu *mh_filter __re int rawv6_mh_filter_register(mh_filter_t filter) { - RCU_INIT_POINTER(mh_filter, filter); + rcu_assign_pointer(mh_filter, filter); return 0; } EXPORT_SYMBOL(rawv6_mh_filter_register); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/ipv6/sit.c linux-3.2.net/net/ipv6/sit.c --- linux-3.2.noarch/net/ipv6/sit.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/ipv6/sit.c 2012-01-20 16:50:27.042788464 -0500 @@ -182,7 +182,7 @@ static void ipip6_tunnel_unlink(struct s (iter = rtnl_dereference(*tp)) != NULL; tp = &iter->next) { if (t == iter) { - RCU_INIT_POINTER(*tp, t->next); + rcu_assign_pointer(*tp, t->next); break; } } @@ -192,8 +192,8 @@ static void ipip6_tunnel_link(struct sit { struct ip_tunnel __rcu **tp = ipip6_bucket(sitn, t); - RCU_INIT_POINTER(t->next, rtnl_dereference(*tp)); - RCU_INIT_POINTER(*tp, t); + rcu_assign_pointer(t->next, rtnl_dereference(*tp)); + rcu_assign_pointer(*tp, t); } static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn) @@ -393,7 +393,7 @@ ipip6_tunnel_add_prl(struct ip_tunnel *t p->addr = a->addr; p->flags = a->flags; t->prl_count++; - RCU_INIT_POINTER(t->prl, p); + rcu_assign_pointer(t->prl, p); out: return err; } @@ -1177,7 +1177,7 @@ static int __net_init ipip6_fb_tunnel_in if (!dev->tstats) return -ENOMEM; dev_hold(dev); - RCU_INIT_POINTER(sitn->tunnels_wc[0], tunnel); + rcu_assign_pointer(sitn->tunnels_wc[0], tunnel); return 0; } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/agg-rx.c linux-3.2.net/net/mac80211/agg-rx.c --- linux-3.2.noarch/net/mac80211/agg-rx.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/mac80211/agg-rx.c 2012-01-20 16:50:27.058787924 -0500 @@ -326,7 +326,7 @@ void ieee80211_process_addba_request(str status = WLAN_STATUS_SUCCESS; /* activate it for RX */ - RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx); + rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx); if (timeout) mod_timer(&tid_agg_rx->session_timer, TU_TO_EXP_TIME(timeout)); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/cfg.c linux-3.2.net/net/mac80211/cfg.c --- linux-3.2.noarch/net/mac80211/cfg.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/mac80211/cfg.c 2012-01-20 16:50:27.082787116 -0500 @@ -575,7 +575,7 @@ static int ieee80211_config_beacon(struc sdata->vif.bss_conf.dtim_period = new->dtim_period; - RCU_INIT_POINTER(sdata->u.ap.beacon, new); + rcu_assign_pointer(sdata->u.ap.beacon, new); synchronize_rcu(); @@ -922,7 +922,7 @@ static int ieee80211_change_station(stru return -EBUSY; } - RCU_INIT_POINTER(vlansdata->u.vlan.sta, sta); + rcu_assign_pointer(vlansdata->u.vlan.sta, sta); } sta->sdata = vlansdata; diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/ibss.c linux-3.2.net/net/mac80211/ibss.c --- linux-3.2.noarch/net/mac80211/ibss.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/mac80211/ibss.c 2012-01-20 16:50:27.102786444 -0500 @@ -184,7 +184,7 @@ static void __ieee80211_sta_join_ibss(st *pos++ = 0; /* U-APSD no in use */ } - RCU_INIT_POINTER(ifibss->presp, skb); + rcu_assign_pointer(ifibss->presp, skb); sdata->vif.bss_conf.beacon_int = beacon_int; sdata->vif.bss_conf.basic_rates = basic_rates; diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/mac80211/sta_info.c linux-3.2.net/net/mac80211/sta_info.c --- linux-3.2.noarch/net/mac80211/sta_info.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/mac80211/sta_info.c 2012-01-20 16:50:27.131785466 -0500 @@ -73,7 +73,7 @@ static int sta_info_hash_del(struct ieee if (!s) return -ENOENT; if (s == sta) { - RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)], + rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)], s->hnext); return 0; } @@ -83,7 +83,7 @@ static int sta_info_hash_del(struct ieee s = rcu_dereference_protected(s->hnext, lockdep_is_held(&local->sta_lock)); if (rcu_access_pointer(s->hnext)) { - RCU_INIT_POINTER(s->hnext, sta->hnext); + rcu_assign_pointer(s->hnext, sta->hnext); return 0; } @@ -232,7 +232,7 @@ static void sta_info_hash_add(struct iee struct sta_info *sta) { sta->hnext = local->sta_hash[STA_HASH(sta->sta.addr)]; - RCU_INIT_POINTER(local->sta_hash[STA_HASH(sta->sta.addr)], sta); + rcu_assign_pointer(local->sta_hash[STA_HASH(sta->sta.addr)], sta); } static void sta_unblock(struct work_struct *wk) diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_core.c linux-3.2.net/net/netfilter/nf_conntrack_core.c --- linux-3.2.noarch/net/netfilter/nf_conntrack_core.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nf_conntrack_core.c 2012-01-20 16:50:27.169784186 -0500 @@ -776,7 +776,7 @@ init_conntrack(struct net *net, struct n if (exp->helper) { help = nf_ct_helper_ext_add(ct, GFP_ATOMIC); if (help) - RCU_INIT_POINTER(help->helper, exp->helper); + rcu_assign_pointer(help->helper, exp->helper); } #ifdef CONFIG_NF_CONNTRACK_MARK diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_ecache.c linux-3.2.net/net/netfilter/nf_conntrack_ecache.c --- linux-3.2.noarch/net/netfilter/nf_conntrack_ecache.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nf_conntrack_ecache.c 2012-01-20 16:50:27.187783578 -0500 @@ -91,7 +91,7 @@ int nf_conntrack_register_notifier(struc ret = -EBUSY; goto out_unlock; } - RCU_INIT_POINTER(net->ct.nf_conntrack_event_cb, new); + rcu_assign_pointer(net->ct.nf_conntrack_event_cb, new); mutex_unlock(&nf_ct_ecache_mutex); return ret; @@ -128,7 +128,7 @@ int nf_ct_expect_register_notifier(struc ret = -EBUSY; goto out_unlock; } - RCU_INIT_POINTER(net->ct.nf_expect_event_cb, new); + rcu_assign_pointer(net->ct.nf_expect_event_cb, new); mutex_unlock(&nf_ct_ecache_mutex); return ret; diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_extend.c linux-3.2.net/net/netfilter/nf_conntrack_extend.c --- linux-3.2.noarch/net/netfilter/nf_conntrack_extend.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nf_conntrack_extend.c 2012-01-20 16:50:27.204783008 -0500 @@ -169,7 +169,7 @@ int nf_ct_extend_register(struct nf_ct_e before updating alloc_size */ type->alloc_size = ALIGN(sizeof(struct nf_ct_ext), type->align) + type->len; - RCU_INIT_POINTER(nf_ct_ext_types[type->id], type); + rcu_assign_pointer(nf_ct_ext_types[type->id], type); update_alloc_size(type); out: mutex_unlock(&nf_ct_ext_type_mutex); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_helper.c linux-3.2.net/net/netfilter/nf_conntrack_helper.c --- linux-3.2.noarch/net/netfilter/nf_conntrack_helper.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nf_conntrack_helper.c 2012-01-20 16:50:27.227782232 -0500 @@ -145,7 +145,7 @@ int __nf_ct_try_assign_helper(struct nf_ memset(&help->help, 0, sizeof(help->help)); } - RCU_INIT_POINTER(help->helper, helper); + rcu_assign_pointer(help->helper, helper); out: return ret; } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_conntrack_netlink.c linux-3.2.net/net/netfilter/nf_conntrack_netlink.c --- linux-3.2.noarch/net/netfilter/nf_conntrack_netlink.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nf_conntrack_netlink.c 2012-01-20 16:50:27.271780750 -0500 @@ -1163,7 +1163,7 @@ ctnetlink_change_helper(struct nf_conn * return -EOPNOTSUPP; } - RCU_INIT_POINTER(help->helper, helper); + rcu_assign_pointer(help->helper, helper); return 0; } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_log.c linux-3.2.net/net/netfilter/nf_log.c --- linux-3.2.noarch/net/netfilter/nf_log.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nf_log.c 2012-01-20 16:50:27.280780448 -0500 @@ -55,7 +55,7 @@ int nf_log_register(u_int8_t pf, struct llog = rcu_dereference_protected(nf_loggers[pf], lockdep_is_held(&nf_log_mutex)); if (llog == NULL) - RCU_INIT_POINTER(nf_loggers[pf], logger); + rcu_assign_pointer(nf_loggers[pf], logger); } mutex_unlock(&nf_log_mutex); @@ -92,7 +92,7 @@ int nf_log_bind_pf(u_int8_t pf, const st mutex_unlock(&nf_log_mutex); return -ENOENT; } - RCU_INIT_POINTER(nf_loggers[pf], logger); + rcu_assign_pointer(nf_loggers[pf], logger); mutex_unlock(&nf_log_mutex); return 0; } @@ -250,7 +250,7 @@ static int nf_log_proc_dostring(ctl_tabl mutex_unlock(&nf_log_mutex); return -ENOENT; } - RCU_INIT_POINTER(nf_loggers[tindex], logger); + rcu_assign_pointer(nf_loggers[tindex], logger); mutex_unlock(&nf_log_mutex); } else { mutex_lock(&nf_log_mutex); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nfnetlink.c linux-3.2.net/net/netfilter/nfnetlink.c --- linux-3.2.noarch/net/netfilter/nfnetlink.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nfnetlink.c 2012-01-20 16:50:27.302779705 -0500 @@ -59,7 +59,7 @@ int nfnetlink_subsys_register(const stru nfnl_unlock(); return -EBUSY; } - RCU_INIT_POINTER(subsys_table[n->subsys_id], n); + rcu_assign_pointer(subsys_table[n->subsys_id], n); nfnl_unlock(); return 0; @@ -210,7 +210,7 @@ static int __net_init nfnetlink_net_init if (!nfnl) return -ENOMEM; net->nfnl_stash = nfnl; - RCU_INIT_POINTER(net->nfnl, nfnl); + rcu_assign_pointer(net->nfnl, nfnl); return 0; } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netfilter/nf_queue.c linux-3.2.net/net/netfilter/nf_queue.c --- linux-3.2.noarch/net/netfilter/nf_queue.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netfilter/nf_queue.c 2012-01-20 16:50:27.293780010 -0500 @@ -40,7 +40,7 @@ int nf_register_queue_handler(u_int8_t p else if (old) ret = -EBUSY; else { - RCU_INIT_POINTER(queue_handler[pf], qh); + rcu_assign_pointer(queue_handler[pf], qh); ret = 0; } mutex_unlock(&queue_handler_mutex); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netlabel/netlabel_domainhash.c linux-3.2.net/net/netlabel/netlabel_domainhash.c --- linux-3.2.noarch/net/netlabel/netlabel_domainhash.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netlabel/netlabel_domainhash.c 2012-01-20 16:50:27.311779402 -0500 @@ -282,7 +282,7 @@ int __init netlbl_domhsh_init(u32 size) INIT_LIST_HEAD(&hsh_tbl->tbl[iter]); spin_lock(&netlbl_domhsh_lock); - RCU_INIT_POINTER(netlbl_domhsh, hsh_tbl); + rcu_assign_pointer(netlbl_domhsh, hsh_tbl); spin_unlock(&netlbl_domhsh_lock); return 0; @@ -330,7 +330,7 @@ int netlbl_domhsh_add(struct netlbl_dom_ &rcu_dereference(netlbl_domhsh)->tbl[bkt]); } else { INIT_LIST_HEAD(&entry->list); - RCU_INIT_POINTER(netlbl_domhsh_def, entry); + rcu_assign_pointer(netlbl_domhsh_def, entry); } if (entry->type == NETLBL_NLTYPE_ADDRSELECT) { diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/netlabel/netlabel_unlabeled.c linux-3.2.net/net/netlabel/netlabel_unlabeled.c --- linux-3.2.noarch/net/netlabel/netlabel_unlabeled.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/netlabel/netlabel_unlabeled.c 2012-01-20 16:50:27.327778863 -0500 @@ -354,7 +354,7 @@ static struct netlbl_unlhsh_iface *netlb INIT_LIST_HEAD(&iface->list); if (netlbl_unlhsh_rcu_deref(netlbl_unlhsh_def) != NULL) goto add_iface_failure; - RCU_INIT_POINTER(netlbl_unlhsh_def, iface); + rcu_assign_pointer(netlbl_unlhsh_def, iface); } spin_unlock(&netlbl_unlhsh_lock); @@ -1447,11 +1447,9 @@ int __init netlbl_unlabel_init(u32 size) for (iter = 0; iter < hsh_tbl->size; iter++) INIT_LIST_HEAD(&hsh_tbl->tbl[iter]); - rcu_read_lock(); spin_lock(&netlbl_unlhsh_lock); - RCU_INIT_POINTER(netlbl_unlhsh, hsh_tbl); + rcu_assign_pointer(netlbl_unlhsh, hsh_tbl); spin_unlock(&netlbl_unlhsh_lock); - rcu_read_unlock(); register_netdevice_notifier(&netlbl_unlhsh_netdev_notifier); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/phonet/af_phonet.c linux-3.2.net/net/phonet/af_phonet.c --- linux-3.2.noarch/net/phonet/af_phonet.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/phonet/af_phonet.c 2012-01-20 16:50:27.345778258 -0500 @@ -480,7 +480,7 @@ int __init_or_module phonet_proto_regist if (proto_tab[protocol]) err = -EBUSY; else - RCU_INIT_POINTER(proto_tab[protocol], pp); + rcu_assign_pointer(proto_tab[protocol], pp); mutex_unlock(&proto_tab_lock); return err; diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/phonet/pn_dev.c linux-3.2.net/net/phonet/pn_dev.c --- linux-3.2.noarch/net/phonet/pn_dev.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/phonet/pn_dev.c 2012-01-20 16:50:27.353777988 -0500 @@ -390,7 +390,7 @@ int phonet_route_add(struct net_device * daddr = daddr >> 2; mutex_lock(&routes->lock); if (routes->table[daddr] == NULL) { - RCU_INIT_POINTER(routes->table[daddr], dev); + rcu_assign_pointer(routes->table[daddr], dev); dev_hold(dev); err = 0; } diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/phonet/socket.c linux-3.2.net/net/phonet/socket.c --- linux-3.2.noarch/net/phonet/socket.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/phonet/socket.c 2012-01-20 16:50:27.365777583 -0500 @@ -680,7 +680,7 @@ int pn_sock_bind_res(struct sock *sk, u8 mutex_lock(&resource_mutex); if (pnres.sk[res] == NULL) { sock_hold(sk); - RCU_INIT_POINTER(pnres.sk[res], sk); + rcu_assign_pointer(pnres.sk[res], sk); ret = 0; } mutex_unlock(&resource_mutex); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/socket.c linux-3.2.net/net/socket.c --- linux-3.2.noarch/net/socket.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/socket.c 2012-01-20 16:50:27.410776068 -0500 @@ -2472,7 +2472,7 @@ int sock_register(const struct net_proto lockdep_is_held(&net_family_lock))) err = -EEXIST; else { - RCU_INIT_POINTER(net_families[ops->family], ops); + rcu_assign_pointer(net_families[ops->family], ops); err = 0; } spin_unlock(&net_family_lock); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/sunrpc/auth_gss/auth_gss.c linux-3.2.net/net/sunrpc/auth_gss/auth_gss.c --- linux-3.2.noarch/net/sunrpc/auth_gss/auth_gss.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/sunrpc/auth_gss/auth_gss.c 2012-01-20 16:50:27.428775461 -0500 @@ -122,7 +122,7 @@ gss_cred_set_ctx(struct rpc_cred *cred, if (!test_bit(RPCAUTH_CRED_NEW, &cred->cr_flags)) return; gss_get_ctx(ctx); - RCU_INIT_POINTER(gss_cred->gc_ctx, ctx); + rcu_assign_pointer(gss_cred->gc_ctx, ctx); set_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags); smp_mb__before_clear_bit(); clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags); diff -durpN '--exclude-from=/home/davej/.exclude' linux-3.2.noarch/net/xfrm/xfrm_user.c linux-3.2.net/net/xfrm/xfrm_user.c --- linux-3.2.noarch/net/xfrm/xfrm_user.c 2012-01-04 18:55:44.000000000 -0500 +++ linux-3.2.net/net/xfrm/xfrm_user.c 2012-01-20 16:50:27.449774754 -0500 @@ -2927,7 +2927,7 @@ static int __net_init xfrm_user_net_init if (nlsk == NULL) return -ENOMEM; net->xfrm.nlsk_stash = nlsk; /* Don't set to NULL */ - RCU_INIT_POINTER(net->xfrm.nlsk, nlsk); + rcu_assign_pointer(net->xfrm.nlsk, nlsk); return 0; }