if (rtnl_dereference(port->applicants[i]))
                        return;
        }
-       rcu_assign_pointer(dev->garp_port, NULL);
+       RCU_INIT_POINTER(dev->garp_port, NULL);
        kfree_rcu(port, rcu);
 }
 
 
        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
         * all pending messages before the applicant is gone. */
 
 {
        mutex_lock(&stp_proto_mutex);
        if (is_zero_ether_addr(proto->group_address))
-               rcu_assign_pointer(stp_proto, NULL);
+               RCU_INIT_POINTER(stp_proto, NULL);
        else
-               rcu_assign_pointer(garp_protos[proto->group_address[5] -
+               RCU_INIT_POINTER(garp_protos[proto->group_address[5] -
                                               GARP_ADDR_MIN], NULL);
        synchronize_rcu();
 
 
        if (grp->nr_vlans == 0) {
                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. */
                call_rcu(&grp->rcu, vlan_rcu_free);
 
        if (ret < 0)
                return ret;
        /* 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);
        return 0;
 }
 
 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();
        unregister_pernet_subsys(&broute_net_ops);
 }
 
        int idx = phyid % DN_CACHE_SIZE;
 
        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);
        if (dn == NULL)
                goto out;
        if (up == NULL)
                goto out;
 
-       rcu_assign_pointer(muxl->up_cache[idx], NULL);
+       RCU_INIT_POINTER(muxl->up_cache[idx], NULL);
        list_del_rcu(&up->node);
 out:
        spin_unlock_bh(&muxl->receive_lock);
 
                                idx = layer->id % UP_CACHE_SIZE;
                                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);
                                spin_unlock_bh(&muxl->receive_lock);
                        }
 
                       proto);
                err = -EBUSY;
        } else
-               rcu_assign_pointer(proto_tab[proto], cp);
+               RCU_INIT_POINTER(proto_tab[proto], cp);
 
        mutex_unlock(&proto_tab_lock);
 
 
        mutex_lock(&proto_tab_lock);
        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);
 
        synchronize_rcu();
 
 {
 
        ASSERT_RTNL();
-       rcu_assign_pointer(dev->rx_handler, NULL);
-       rcu_assign_pointer(dev->rx_handler_data, NULL);
+       RCU_INIT_POINTER(dev->rx_handler, NULL);
+       RCU_INIT_POINTER(dev->rx_handler_data, NULL);
 }
 EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
 
 
                if (ops->nr_goto_rules > 0) {
                        list_for_each_entry(tmp, &ops->rules_list, list) {
                                if (rtnl_dereference(tmp->ctarget) == rule) {
-                                       rcu_assign_pointer(tmp->ctarget, NULL);
+                                       RCU_INIT_POINTER(tmp->ctarget, NULL);
                                        ops->unresolved_rules++;
                                }
                        }
 
        filter = rcu_dereference_protected(sk->sk_filter,
                                           sock_owned_by_user(sk));
        if (filter) {
-               rcu_assign_pointer(sk->sk_filter, NULL);
+               RCU_INIT_POINTER(sk->sk_filter, NULL);
                sk_filter_uncharge(sk, filter);
                ret = 0;
        }
 
        }
 
        if (nonempty)
-               rcu_assign_pointer(dev->xps_maps, new_dev_maps);
+               RCU_INIT_POINTER(dev->xps_maps, new_dev_maps);
        else {
                kfree(new_dev_maps);
-               rcu_assign_pointer(dev->xps_maps, NULL);
+               RCU_INIT_POINTER(dev->xps_maps, NULL);
        }
 
        if (dev_maps)
 
        }
 
        /* 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;
 
                if (ops->ndo_netpoll_cleanup)
                        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 */
                synchronize_rcu_bh();
 
 
        if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) {
                sk_tx_queue_clear(sk);
-               rcu_assign_pointer(sk->sk_dst_cache, NULL);
+               RCU_INIT_POINTER(sk->sk_dst_cache, NULL);
                dst_release(dst);
                return NULL;
        }
                                       atomic_read(&sk->sk_wmem_alloc) == 0);
        if (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);
 
        }
 
        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);
        blocking_notifier_call_chain(&dnaddr_chain, NETDEV_UP, ifa);
 
        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;
        init_timer(&dn_db->timer);
 
 
        dn_db->neigh_parms = neigh_parms_alloc(dev, &dn_neigh_table);
        if (!dn_db->neigh_parms) {
-               rcu_assign_pointer(dev->dn_ptr, NULL);
+               RCU_INIT_POINTER(dev->dn_ptr, NULL);
                kfree(dn_db);
                return NULL;
        }
 
                ip_mc_up(in_dev);
 
        /* 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:
        return in_dev;
 out_kfree:
                inet_free_ifa(ifa);
        }
 
-       rcu_assign_pointer(dev->ip_ptr, NULL);
+       RCU_INIT_POINTER(dev->ip_ptr, NULL);
 
        devinet_sysctl_unregister(in_dev);
        neigh_parms_release(&arp_tbl, in_dev->arp_parms);
        switch (event) {
        case NETDEV_REGISTER:
                printk(KERN_DEBUG "inetdev_event: bug\n");
-               rcu_assign_pointer(dev->ip_ptr, NULL);
+               RCU_INIT_POINTER(dev->ip_ptr, NULL);
                break;
        case NETDEV_UP:
                if (!inetdev_valid_mtu(dev->mtu))
 
        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.
  */
 static inline void node_set_parent(struct rt_trie_node *node, struct tnode *ptr)
        if (n)
                node_set_parent(n, tn);
 
-       rcu_assign_pointer(tn->child[i], n);
+       RCU_INIT_POINTER(tn->child[i], n);
 }
 
 #define MAX_WORK 10
 
                tp = node_parent((struct rt_trie_node *) tn);
                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();
                if (!tp)
        if (IS_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();
 }
 
                        put_child(t, (struct tnode *)tp, cindex,
                                  (struct rt_trie_node *)tn);
                } else {
-                       rcu_assign_pointer(t->trie, (struct rt_trie_node *)tn);
+                       RCU_INIT_POINTER(t->trie, (struct rt_trie_node *)tn);
                        tp = tn;
                }
        }
                put_child(t, (struct tnode *)tp, cindex, NULL);
                trie_rebalance(t, tp);
        } else
-               rcu_assign_pointer(t->trie, NULL);
+               RCU_INIT_POINTER(t->trie, NULL);
 
        free_leaf(l);
 }
 
        if (gre_proto[version])
                goto err_out_unlock;
 
-       rcu_assign_pointer(gre_proto[version], proto);
+       RCU_INIT_POINTER(gre_proto[version], proto);
        spin_unlock(&gre_proto_lock);
        return 0;
 
        if (rcu_dereference_protected(gre_proto[version],
                        lockdep_is_held(&gre_proto_lock)) != proto)
                goto err_out_unlock;
-       rcu_assign_pointer(gre_proto[version], NULL);
+       RCU_INIT_POINTER(gre_proto[version], NULL);
        spin_unlock(&gre_proto_lock);
        synchronize_rcu();
        return 0;
 
 
        im->next_rcu = in_dev->mc_list;
        in_dev->mc_count++;
-       rcu_assign_pointer(in_dev->mc_list, im);
+       RCU_INIT_POINTER(in_dev->mc_list, im);
 
 #ifdef CONFIG_IP_MULTICAST
        igmpv3_del_delrec(in_dev, im->multiaddr);
        iml->next_rcu = inet->mc_list;
        iml->sflist = NULL;
        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);
        err = 0;
 done:
        }
        err = ip_mc_del_src(in_dev, &iml->multi.imr_multiaddr.s_addr,
                        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 */
        atomic_sub(IP_SFLSIZE(psf->sl_max), &sk->sk_omem_alloc);
        kfree_rcu(psf, rcu);
                        atomic_sub(IP_SFLSIZE(psl->sl_max), &sk->sk_omem_alloc);
                        kfree_rcu(psl, rcu);
                }
-               rcu_assign_pointer(pmc->sflist, newpsl);
+               RCU_INIT_POINTER(pmc->sflist, newpsl);
                psl = newpsl;
        }
        rv = 1; /* > 0 for insert logic below if sl_count is 0 */
        } else
                (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,
                        0, NULL, 0);
-       rcu_assign_pointer(pmc->sflist, newpsl);
+       RCU_INIT_POINTER(pmc->sflist, newpsl);
        pmc->sfmode = msf->imsf_fmode;
        err = 0;
 done:
 
             (iter = rtnl_dereference(*tp)) != NULL;
             tp = &iter->next) {
                if (t == iter) {
-                       rcu_assign_pointer(*tp, t->next);
+                       RCU_INIT_POINTER(*tp, t->next);
                        break;
                }
        }
 {
        struct ip_tunnel __rcu **tp = ipip_bucket(ipn, t);
 
-       rcu_assign_pointer(t->next, rtnl_dereference(*tp));
-       rcu_assign_pointer(*tp, t);
+       RCU_INIT_POINTER(t->next, rtnl_dereference(*tp));
+       RCU_INIT_POINTER(*tp, t);
 }
 
 static struct ip_tunnel * ipip_tunnel_locate(struct net *net,
        struct ipip_net *ipn = net_generic(net, ipip_net_id);
 
        if (dev == ipn->fb_tunnel_dev)
-               rcu_assign_pointer(ipn->tunnels_wc[0], NULL);
+               RCU_INIT_POINTER(ipn->tunnels_wc[0], NULL);
        else
                ipip_tunnel_unlink(ipn, netdev_priv(dev));
        dev_put(dev);
                return -ENOMEM;
 
        dev_hold(dev);
-       rcu_assign_pointer(ipn->tunnels_wc[0], tunnel);
+       RCU_INIT_POINTER(ipn->tunnels_wc[0], tunnel);
        return 0;
 }
 
 
        ipmr_for_each_table(mrt, net) {
                if (sk == rtnl_dereference(mrt->mroute_sk)) {
                        IPV4_DEVCONF_ALL(net, MC_FORWARDING)--;
-                       rcu_assign_pointer(mrt->mroute_sk, NULL);
+                       RCU_INIT_POINTER(mrt->mroute_sk, NULL);
                        mroute_clean_tables(mrt);
                }
        }
 
                ret = ip_ra_control(sk, 1, mrtsock_destruct);
                if (ret == 0) {
-                       rcu_assign_pointer(mrt->mroute_sk, sk);
+                       RCU_INIT_POINTER(mrt->mroute_sk, sk);
                        IPV4_DEVCONF_ALL(net, MC_FORWARDING)++;
                }
                rtnl_unlock();
 
 
 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();
 }
 
 static int __init nf_nat_amanda_init(void)
 {
        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;
 }
 
 
                ret = -EBUSY;
                goto out;
        }
-       rcu_assign_pointer(nf_nat_protos[proto->protonum], proto);
+       RCU_INIT_POINTER(nf_nat_protos[proto->protonum], proto);
  out:
        spin_unlock_bh(&nf_nat_lock);
        return ret;
 void nf_nat_protocol_unregister(const struct nf_nat_protocol *proto)
 {
        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);
        spin_unlock_bh(&nf_nat_lock);
        synchronize_rcu();
        /* Sew in builtin protocols. */
        spin_lock_bh(&nf_nat_lock);
        for (i = 0; i < MAX_IP_NAT_PROTO; i++)
-               rcu_assign_pointer(nf_nat_protos[i], &nf_nat_unknown_protocol);
-       rcu_assign_pointer(nf_nat_protos[IPPROTO_TCP], &nf_nat_protocol_tcp);
-       rcu_assign_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[i], &nf_nat_unknown_protocol);
+       RCU_INIT_POINTER(nf_nat_protos[IPPROTO_TCP], &nf_nat_protocol_tcp);
+       RCU_INIT_POINTER(nf_nat_protos[IPPROTO_UDP], &nf_nat_protocol_udp);
+       RCU_INIT_POINTER(nf_nat_protos[IPPROTO_ICMP], &nf_nat_protocol_icmp);
        spin_unlock_bh(&nf_nat_lock);
 
        /* Initialize fake conntrack so that NAT will skip it */
        l3proto = nf_ct_l3proto_find_get((u_int16_t)AF_INET);
 
        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);
-       rcu_assign_pointer(nfnetlink_parse_nat_setup_hook,
+       RCU_INIT_POINTER(nfnetlink_parse_nat_setup_hook,
                           nfnetlink_parse_nat_setup);
        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;
 
  cleanup_extend:
        unregister_pernet_subsys(&nf_nat_net_ops);
        nf_ct_l3proto_put(l3proto);
        nf_ct_extend_unregister(&nat_extend);
-       rcu_assign_pointer(nf_nat_seq_adjust_hook, NULL);
-       rcu_assign_pointer(nfnetlink_parse_nat_setup_hook, NULL);
-       rcu_assign_pointer(nf_ct_nat_offset, NULL);
+       RCU_INIT_POINTER(nf_nat_seq_adjust_hook, NULL);
+       RCU_INIT_POINTER(nfnetlink_parse_nat_setup_hook, NULL);
+       RCU_INIT_POINTER(nf_ct_nat_offset, NULL);
        synchronize_net();
 }
 
 
 
 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();
 }
 
 static int __init nf_nat_ftp_init(void)
 {
        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;
 }
 
 
        BUG_ON(nat_callforwarding_hook != NULL);
        BUG_ON(nat_q931_hook != NULL);
 
-       rcu_assign_pointer(set_h245_addr_hook, set_h245_addr);
-       rcu_assign_pointer(set_h225_addr_hook, set_h225_addr);
-       rcu_assign_pointer(set_sig_addr_hook, set_sig_addr);
-       rcu_assign_pointer(set_ras_addr_hook, set_ras_addr);
-       rcu_assign_pointer(nat_rtp_rtcp_hook, nat_rtp_rtcp);
-       rcu_assign_pointer(nat_t120_hook, nat_t120);
-       rcu_assign_pointer(nat_h245_hook, nat_h245);
-       rcu_assign_pointer(nat_callforwarding_hook, nat_callforwarding);
-       rcu_assign_pointer(nat_q931_hook, nat_q931);
+       RCU_INIT_POINTER(set_h245_addr_hook, set_h245_addr);
+       RCU_INIT_POINTER(set_h225_addr_hook, set_h225_addr);
+       RCU_INIT_POINTER(set_sig_addr_hook, set_sig_addr);
+       RCU_INIT_POINTER(set_ras_addr_hook, set_ras_addr);
+       RCU_INIT_POINTER(nat_rtp_rtcp_hook, nat_rtp_rtcp);
+       RCU_INIT_POINTER(nat_t120_hook, nat_t120);
+       RCU_INIT_POINTER(nat_h245_hook, nat_h245);
+       RCU_INIT_POINTER(nat_callforwarding_hook, nat_callforwarding);
+       RCU_INIT_POINTER(nat_q931_hook, nat_q931);
        return 0;
 }
 
 /****************************************************************************/
 static void __exit fini(void)
 {
-       rcu_assign_pointer(set_h245_addr_hook, NULL);
-       rcu_assign_pointer(set_h225_addr_hook, NULL);
-       rcu_assign_pointer(set_sig_addr_hook, NULL);
-       rcu_assign_pointer(set_ras_addr_hook, NULL);
-       rcu_assign_pointer(nat_rtp_rtcp_hook, NULL);
-       rcu_assign_pointer(nat_t120_hook, NULL);
-       rcu_assign_pointer(nat_h245_hook, NULL);
-       rcu_assign_pointer(nat_callforwarding_hook, NULL);
-       rcu_assign_pointer(nat_q931_hook, NULL);
+       RCU_INIT_POINTER(set_h245_addr_hook, NULL);
+       RCU_INIT_POINTER(set_h225_addr_hook, NULL);
+       RCU_INIT_POINTER(set_sig_addr_hook, NULL);
+       RCU_INIT_POINTER(set_ras_addr_hook, NULL);
+       RCU_INIT_POINTER(nat_rtp_rtcp_hook, NULL);
+       RCU_INIT_POINTER(nat_t120_hook, NULL);
+       RCU_INIT_POINTER(nat_h245_hook, NULL);
+       RCU_INIT_POINTER(nat_callforwarding_hook, NULL);
+       RCU_INIT_POINTER(nat_q931_hook, NULL);
        synchronize_rcu();
 }
 
 
 
 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();
 }
 
 static int __init nf_nat_irc_init(void)
 {
        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;
 }
 
 
        nf_nat_need_gre();
 
        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);
-       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);
-       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);
-       rcu_assign_pointer(nf_nat_pptp_hook_expectfn, pptp_nat_expected);
+       RCU_INIT_POINTER(nf_nat_pptp_hook_expectfn, pptp_nat_expected);
        return 0;
 }
 
 static void __exit nf_nat_helper_pptp_fini(void)
 {
-       rcu_assign_pointer(nf_nat_pptp_hook_expectfn, NULL);
-       rcu_assign_pointer(nf_nat_pptp_hook_exp_gre, NULL);
-       rcu_assign_pointer(nf_nat_pptp_hook_inbound, NULL);
-       rcu_assign_pointer(nf_nat_pptp_hook_outbound, NULL);
+       RCU_INIT_POINTER(nf_nat_pptp_hook_expectfn, NULL);
+       RCU_INIT_POINTER(nf_nat_pptp_hook_exp_gre, NULL);
+       RCU_INIT_POINTER(nf_nat_pptp_hook_inbound, NULL);
+       RCU_INIT_POINTER(nf_nat_pptp_hook_outbound, NULL);
        synchronize_rcu();
 }
 
 
 
 static void __exit nf_nat_sip_fini(void)
 {
-       rcu_assign_pointer(nf_nat_sip_hook, NULL);
-       rcu_assign_pointer(nf_nat_sip_seq_adjust_hook, NULL);
-       rcu_assign_pointer(nf_nat_sip_expect_hook, NULL);
-       rcu_assign_pointer(nf_nat_sdp_addr_hook, NULL);
-       rcu_assign_pointer(nf_nat_sdp_port_hook, NULL);
-       rcu_assign_pointer(nf_nat_sdp_session_hook, NULL);
-       rcu_assign_pointer(nf_nat_sdp_media_hook, NULL);
+       RCU_INIT_POINTER(nf_nat_sip_hook, NULL);
+       RCU_INIT_POINTER(nf_nat_sip_seq_adjust_hook, NULL);
+       RCU_INIT_POINTER(nf_nat_sip_expect_hook, NULL);
+       RCU_INIT_POINTER(nf_nat_sdp_addr_hook, NULL);
+       RCU_INIT_POINTER(nf_nat_sdp_port_hook, NULL);
+       RCU_INIT_POINTER(nf_nat_sdp_session_hook, NULL);
+       RCU_INIT_POINTER(nf_nat_sdp_media_hook, NULL);
        synchronize_rcu();
 }
 
        BUG_ON(nf_nat_sdp_port_hook != NULL);
        BUG_ON(nf_nat_sdp_session_hook != NULL);
        BUG_ON(nf_nat_sdp_media_hook != NULL);
-       rcu_assign_pointer(nf_nat_sip_hook, ip_nat_sip);
-       rcu_assign_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_assign_pointer(nf_nat_sdp_addr_hook, ip_nat_sdp_addr);
-       rcu_assign_pointer(nf_nat_sdp_port_hook, ip_nat_sdp_port);
-       rcu_assign_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_sip_hook, ip_nat_sip);
+       RCU_INIT_POINTER(nf_nat_sip_seq_adjust_hook, ip_nat_sip_seq_adjust);
+       RCU_INIT_POINTER(nf_nat_sip_expect_hook, ip_nat_sip_expect);
+       RCU_INIT_POINTER(nf_nat_sdp_addr_hook, ip_nat_sdp_addr);
+       RCU_INIT_POINTER(nf_nat_sdp_port_hook, ip_nat_sdp_port);
+       RCU_INIT_POINTER(nf_nat_sdp_session_hook, ip_nat_sdp_session);
+       RCU_INIT_POINTER(nf_nat_sdp_media_hook, ip_nat_sdp_media);
        return 0;
 }
 
 
        int ret = 0;
 
        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);
        if (ret < 0) {
 
 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);
 }
 
 
 
 #ifdef CONFIG_XFRM
        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
        ret = nf_nat_rule_init();
        if (ret < 0) {
        nf_nat_rule_cleanup();
  cleanup_decode_session:
 #ifdef CONFIG_XFRM
-       rcu_assign_pointer(ip_nat_decode_session, NULL);
+       RCU_INIT_POINTER(ip_nat_decode_session, NULL);
        synchronize_net();
 #endif
        return ret;
        nf_unregister_hooks(nf_nat_ops, ARRAY_SIZE(nf_nat_ops));
        nf_nat_rule_cleanup();
 #ifdef CONFIG_XFRM
-       rcu_assign_pointer(ip_nat_decode_session, NULL);
+       RCU_INIT_POINTER(ip_nat_decode_session, NULL);
        synchronize_net();
 #endif
        /* Conntrack caches are unregistered in nf_conntrack_cleanup */
 
 
 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();
 }
 
 static int __init nf_nat_tftp_init(void)
 {
        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;
 }
 
 
        ndev->tstamp = jiffies;
        addrconf_sysctl_register(ndev);
        /* protected by rtnl_lock */
-       rcu_assign_pointer(dev->ip6_ptr, ndev);
+       RCU_INIT_POINTER(dev->ip6_ptr, ndev);
 
        /* Join all-node multicast group */
        ipv6_dev_mc_inc(dev, &in6addr_linklocal_allnodes);
                idev->dead = 1;
 
                /* protected by rtnl_lock */
-               rcu_assign_pointer(dev->ip6_ptr, NULL);
+               RCU_INIT_POINTER(dev->ip6_ptr, NULL);
 
                /* Step 1.5: remove snmp6 entry */
                snmp6_unregister_dev(idev);
 
 {
        struct ip6_tnl __rcu **tp = ip6_tnl_bucket(ip6n, &t->parms);
 
-       rcu_assign_pointer(t->next , rtnl_dereference(*tp));
-       rcu_assign_pointer(*tp, t);
+       RCU_INIT_POINTER(t->next , rtnl_dereference(*tp));
+       RCU_INIT_POINTER(*tp, t);
 }
 
 /**
             (iter = rtnl_dereference(*tp)) != NULL;
             tp = &iter->next) {
                if (t == iter) {
-                       rcu_assign_pointer(*tp, t->next);
+                       RCU_INIT_POINTER(*tp, t->next);
                        break;
                }
        }
        struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
 
        if (dev == ip6n->fb_tnl_dev)
-               rcu_assign_pointer(ip6n->tnls_wc[0], NULL);
+               RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
        else
                ip6_tnl_unlink(ip6n, t);
        ip6_tnl_dst_reset(t);
 
        t->parms.proto = IPPROTO_IPV6;
        dev_hold(dev);
-       rcu_assign_pointer(ip6n->tnls_wc[0], t);
+       RCU_INIT_POINTER(ip6n->tnls_wc[0], t);
        return 0;
 }
 
 
 
 int rawv6_mh_filter_register(mh_filter_t filter)
 {
-       rcu_assign_pointer(mh_filter, filter);
+       RCU_INIT_POINTER(mh_filter, filter);
        return 0;
 }
 EXPORT_SYMBOL(rawv6_mh_filter_register);
 
 int rawv6_mh_filter_unregister(mh_filter_t filter)
 {
-       rcu_assign_pointer(mh_filter, NULL);
+       RCU_INIT_POINTER(mh_filter, NULL);
        synchronize_rcu();
        return 0;
 }
 
             (iter = rtnl_dereference(*tp)) != NULL;
             tp = &iter->next) {
                if (t == iter) {
-                       rcu_assign_pointer(*tp, t->next);
+                       RCU_INIT_POINTER(*tp, t->next);
                        break;
                }
        }
 {
        struct ip_tunnel __rcu **tp = ipip6_bucket(sitn, t);
 
-       rcu_assign_pointer(t->next, rtnl_dereference(*tp));
-       rcu_assign_pointer(*tp, t);
+       RCU_INIT_POINTER(t->next, rtnl_dereference(*tp));
+       RCU_INIT_POINTER(*tp, t);
 }
 
 static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn)
        p->addr = a->addr;
        p->flags = a->flags;
        t->prl_count++;
-       rcu_assign_pointer(t->prl, p);
+       RCU_INIT_POINTER(t->prl, p);
 out:
        return err;
 }
        struct sit_net *sitn = net_generic(net, sit_net_id);
 
        if (dev == sitn->fb_tunnel_dev) {
-               rcu_assign_pointer(sitn->tunnels_wc[0], NULL);
+               RCU_INIT_POINTER(sitn->tunnels_wc[0], NULL);
        } else {
                ipip6_tunnel_unlink(sitn, netdev_priv(dev));
                ipip6_tunnel_del_prl(netdev_priv(dev), NULL);
        if (!dev->tstats)
                return -ENOMEM;
        dev_hold(dev);
-       rcu_assign_pointer(sitn->tunnels_wc[0], tunnel);
+       RCU_INIT_POINTER(sitn->tunnels_wc[0], tunnel);
        return 0;
 }
 
 
        if (!tid_rx)
                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
        printk(KERN_DEBUG "Rx BA session stop requested for %pM tid %u\n",
        status = WLAN_STATUS_SUCCESS;
 
        /* 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)
                mod_timer(&tid_agg_rx->session_timer, TU_TO_EXP_TIME(timeout));
 
 
        if (type == NL80211_IFTYPE_AP_VLAN &&
            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 &&
                 params && params->use_4addr >= 0)
                sdata->u.mgd.use_4addr = params->use_4addr;
 
        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();
 
        if (!old)
                return -ENOENT;
 
-       rcu_assign_pointer(sdata->u.ap.beacon, NULL);
+       RCU_INIT_POINTER(sdata->u.ap.beacon, NULL);
        synchronize_rcu();
        kfree(old);
 
                                return -EBUSY;
                        }
 
-                       rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
+                       RCU_INIT_POINTER(vlansdata->u.vlan.sta, sta);
                }
 
                sta->sdata = vlansdata;
 
        drv_reset_tsf(local);
 
        skb = ifibss->skb;
-       rcu_assign_pointer(ifibss->presp, NULL);
+       RCU_INIT_POINTER(ifibss->presp, NULL);
        synchronize_rcu();
        skb->data = skb->head;
        skb->len = 0;
                *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.basic_rates = basic_rates;
        kfree(sdata->u.ibss.ie);
        skb = rcu_dereference_protected(sdata->u.ibss.presp,
                                        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;
        ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED |
                                                BSS_CHANGED_IBSS);
 
                                                 BSS_CHANGED_BEACON_ENABLED);
 
                /* remove beacon */
-               rcu_assign_pointer(sdata->u.ap.beacon, NULL);
+               RCU_INIT_POINTER(sdata->u.ap.beacon, NULL);
                synchronize_rcu();
                kfree(old_beacon);
 
 
        if (!s)
                return -ENOENT;
        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);
                return 0;
        }
                s = rcu_dereference_protected(s->hnext,
                                        lockdep_is_held(&local->sta_lock));
        if (rcu_access_pointer(s->hnext)) {
-               rcu_assign_pointer(s->hnext, sta->hnext);
+               RCU_INIT_POINTER(s->hnext, sta->hnext);
                return 0;
        }
 
                              struct sta_info *sta)
 {
        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)
        local->sta_generation++;
 
        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 (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
 
        err = mutex_lock_interruptible(&afinfo_mutex);
        if (err < 0)
                return err;
-       rcu_assign_pointer(nf_afinfo[afinfo->family], afinfo);
+       RCU_INIT_POINTER(nf_afinfo[afinfo->family], afinfo);
        mutex_unlock(&afinfo_mutex);
        return 0;
 }
 void nf_unregister_afinfo(const struct nf_afinfo *afinfo)
 {
        mutex_lock(&afinfo_mutex);
-       rcu_assign_pointer(nf_afinfo[afinfo->family], NULL);
+       RCU_INIT_POINTER(nf_afinfo[afinfo->family], NULL);
        mutex_unlock(&afinfo_mutex);
        synchronize_rcu();
 }
 
                if (exp->helper) {
                        help = nf_ct_helper_ext_add(ct, GFP_ATOMIC);
                        if (help)
-                               rcu_assign_pointer(help->helper, exp->helper);
+                               RCU_INIT_POINTER(help->helper, exp->helper);
                }
 
 #ifdef CONFIG_NF_CONNTRACK_MARK
 void nf_conntrack_cleanup(struct net *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
           netfilter framework.  Roll on, two-stage module
        nf_conntrack_cleanup_net(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();
        }
 }
 
        if (net_eq(net, &init_net)) {
                /* For use by REJECT target */
-               rcu_assign_pointer(ip_ct_attach, nf_conntrack_attach);
-               rcu_assign_pointer(nf_ct_destroy, destroy_conntrack);
+               RCU_INIT_POINTER(ip_ct_attach, nf_conntrack_attach);
+               RCU_INIT_POINTER(nf_ct_destroy, destroy_conntrack);
 
                /* Howto get NAT offsets */
-               rcu_assign_pointer(nf_ct_nat_offset, NULL);
+               RCU_INIT_POINTER(nf_ct_nat_offset, NULL);
        }
        return 0;
 
 
                ret = -EBUSY;
                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);
        return ret;
 
        notify = rcu_dereference_protected(nf_conntrack_event_cb,
                                           lockdep_is_held(&nf_ct_ecache_mutex));
        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);
 }
 EXPORT_SYMBOL_GPL(nf_conntrack_unregister_notifier);
                ret = -EBUSY;
                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);
        return ret;
 
        notify = rcu_dereference_protected(nf_expect_event_cb,
                                           lockdep_is_held(&nf_ct_ecache_mutex));
        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);
 }
 EXPORT_SYMBOL_GPL(nf_ct_expect_unregister_notifier);
 
           before updating alloc_size */
        type->alloc_size = ALIGN(sizeof(struct nf_ct_ext), type->align)
                           + 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);
 out:
        mutex_unlock(&nf_ct_ext_type_mutex);
 void nf_ct_extend_unregister(struct nf_ct_ext_type *type)
 {
        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);
        mutex_unlock(&nf_ct_ext_type_mutex);
        rcu_barrier(); /* Wait for completion of call_rcu()'s */
 
                helper = __nf_ct_helper_find(&ct->tuplehash[IP_CT_DIR_REPLY].tuple);
        if (helper == NULL) {
                if (help)
-                       rcu_assign_pointer(help->helper, NULL);
+                       RCU_INIT_POINTER(help->helper, NULL);
                goto out;
        }
 
                memset(&help->help, 0, sizeof(help->help));
        }
 
-       rcu_assign_pointer(help->helper, helper);
+       RCU_INIT_POINTER(help->helper, helper);
 out:
        return ret;
 }
                        lockdep_is_held(&nf_conntrack_lock)
                        ) == me) {
                nf_conntrack_event(IPCT_HELPER, ct);
-               rcu_assign_pointer(help->helper, NULL);
+               RCU_INIT_POINTER(help->helper, NULL);
        }
        return 0;
 }
 
                if (help && help->helper) {
                        /* we had a helper before ... */
                        nf_ct_remove_expectations(ct);
-                       rcu_assign_pointer(help->helper, NULL);
+                       RCU_INIT_POINTER(help->helper, NULL);
                }
 
                return 0;
                return -EOPNOTSUPP;
        }
 
-       rcu_assign_pointer(help->helper, helper);
+       RCU_INIT_POINTER(help->helper, helper);
 
        return 0;
 }
                        }
 
                        /* not in hash table yet so not strictly necessary */
-                       rcu_assign_pointer(help->helper, helper);
+                       RCU_INIT_POINTER(help->helper, helper);
                }
        } else {
                /* try an implicit helper assignation */
 
                llog = rcu_dereference_protected(nf_loggers[pf],
                                                 lockdep_is_held(&nf_log_mutex));
                if (llog == NULL)
-                       rcu_assign_pointer(nf_loggers[pf], logger);
+                       RCU_INIT_POINTER(nf_loggers[pf], logger);
        }
 
        mutex_unlock(&nf_log_mutex);
                c_logger = rcu_dereference_protected(nf_loggers[i],
                                                     lockdep_is_held(&nf_log_mutex));
                if (c_logger == logger)
-                       rcu_assign_pointer(nf_loggers[i], NULL);
+                       RCU_INIT_POINTER(nf_loggers[i], NULL);
                list_del(&logger->list[i]);
        }
        mutex_unlock(&nf_log_mutex);
                mutex_unlock(&nf_log_mutex);
                return -ENOENT;
        }
-       rcu_assign_pointer(nf_loggers[pf], logger);
+       RCU_INIT_POINTER(nf_loggers[pf], logger);
        mutex_unlock(&nf_log_mutex);
        return 0;
 }
        if (pf >= ARRAY_SIZE(nf_loggers))
                return;
        mutex_lock(&nf_log_mutex);
-       rcu_assign_pointer(nf_loggers[pf], NULL);
+       RCU_INIT_POINTER(nf_loggers[pf], NULL);
        mutex_unlock(&nf_log_mutex);
 }
 EXPORT_SYMBOL(nf_log_unbind_pf);
                        mutex_unlock(&nf_log_mutex);
                        return -ENOENT;
                }
-               rcu_assign_pointer(nf_loggers[tindex], logger);
+               RCU_INIT_POINTER(nf_loggers[tindex], logger);
                mutex_unlock(&nf_log_mutex);
        } else {
                mutex_lock(&nf_log_mutex);
 
        else if (old)
                ret = -EBUSY;
        else {
-               rcu_assign_pointer(queue_handler[pf], qh);
+               RCU_INIT_POINTER(queue_handler[pf], qh);
                ret = 0;
        }
        mutex_unlock(&queue_handler_mutex);
                return -EINVAL;
        }
 
-       rcu_assign_pointer(queue_handler[pf], NULL);
+       RCU_INIT_POINTER(queue_handler[pf], NULL);
        mutex_unlock(&queue_handler_mutex);
 
        synchronize_rcu();
                                queue_handler[pf],
                                lockdep_is_held(&queue_handler_mutex)
                                ) == qh)
-                       rcu_assign_pointer(queue_handler[pf], NULL);
+                       RCU_INIT_POINTER(queue_handler[pf], NULL);
        }
        mutex_unlock(&queue_handler_mutex);
 
 
                nfnl_unlock();
                return -EBUSY;
        }
-       rcu_assign_pointer(subsys_table[n->subsys_id], n);
+       RCU_INIT_POINTER(subsys_table[n->subsys_id], n);
        nfnl_unlock();
 
        return 0;
        if (!nfnl)
                return -ENOMEM;
        net->nfnl_stash = nfnl;
-       rcu_assign_pointer(net->nfnl, nfnl);
+       RCU_INIT_POINTER(net->nfnl, nfnl);
        return 0;
 }
 
        struct net *net;
 
        list_for_each_entry(net, net_exit_list, exit_list)
-               rcu_assign_pointer(net->nfnl, NULL);
+               RCU_INIT_POINTER(net->nfnl, NULL);
        synchronize_net();
        list_for_each_entry(net, net_exit_list, exit_list)
                netlink_kernel_release(net->nfnl_stash);
 
                INIT_LIST_HEAD(&hsh_tbl->tbl[iter]);
 
        spin_lock(&netlbl_domhsh_lock);
-       rcu_assign_pointer(netlbl_domhsh, hsh_tbl);
+       RCU_INIT_POINTER(netlbl_domhsh, hsh_tbl);
        spin_unlock(&netlbl_domhsh_lock);
 
        return 0;
                                    &rcu_dereference(netlbl_domhsh)->tbl[bkt]);
                } else {
                        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 != rcu_dereference(netlbl_domhsh_def))
                        list_del_rcu(&entry->list);
                else
-                       rcu_assign_pointer(netlbl_domhsh_def, NULL);
+                       RCU_INIT_POINTER(netlbl_domhsh_def, NULL);
        } else
                ret_val = -ENOENT;
        spin_unlock(&netlbl_domhsh_lock);
 
                INIT_LIST_HEAD(&iface->list);
                if (netlbl_unlhsh_rcu_deref(netlbl_unlhsh_def) != NULL)
                        goto add_iface_failure;
-               rcu_assign_pointer(netlbl_unlhsh_def, iface);
+               RCU_INIT_POINTER(netlbl_unlhsh_def, iface);
        }
        spin_unlock(&netlbl_unlhsh_lock);
 
        if (iface->ifindex > 0)
                list_del_rcu(&iface->list);
        else
-               rcu_assign_pointer(netlbl_unlhsh_def, NULL);
+               RCU_INIT_POINTER(netlbl_unlhsh_def, NULL);
        spin_unlock(&netlbl_unlhsh_lock);
 
        call_rcu(&iface->rcu, netlbl_unlhsh_free_iface);
 
        rcu_read_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);
        rcu_read_unlock();
 
 
        if (proto_tab[protocol])
                err = -EBUSY;
        else
-               rcu_assign_pointer(proto_tab[protocol], pp);
+               RCU_INIT_POINTER(proto_tab[protocol], pp);
        mutex_unlock(&proto_tab_lock);
 
        return err;
 {
        mutex_lock(&proto_tab_lock);
        BUG_ON(proto_tab[protocol] != pp);
-       rcu_assign_pointer(proto_tab[protocol], NULL);
+       RCU_INIT_POINTER(proto_tab[protocol], NULL);
        mutex_unlock(&proto_tab_lock);
        synchronize_rcu();
        proto_unregister(pp->prot);
 
        mutex_lock(&pnn->routes.lock);
        for (i = 0; i < 64; i++)
                if (dev == pnn->routes.table[i]) {
-                       rcu_assign_pointer(pnn->routes.table[i], NULL);
+                       RCU_INIT_POINTER(pnn->routes.table[i], NULL);
                        set_bit(i, deleted);
                }
        mutex_unlock(&pnn->routes.lock);
        daddr = daddr >> 2;
        mutex_lock(&routes->lock);
        if (routes->table[daddr] == NULL) {
-               rcu_assign_pointer(routes->table[daddr], dev);
+               RCU_INIT_POINTER(routes->table[daddr], dev);
                dev_hold(dev);
                err = 0;
        }
        daddr = daddr >> 2;
        mutex_lock(&routes->lock);
        if (dev == routes->table[daddr])
-               rcu_assign_pointer(routes->table[daddr], NULL);
+               RCU_INIT_POINTER(routes->table[daddr], NULL);
        else
                dev = NULL;
        mutex_unlock(&routes->lock);
 
        mutex_lock(&resource_mutex);
        if (pnres.sk[res] == NULL) {
                sock_hold(sk);
-               rcu_assign_pointer(pnres.sk[res], sk);
+               RCU_INIT_POINTER(pnres.sk[res], sk);
                ret = 0;
        }
        mutex_unlock(&resource_mutex);
 
        mutex_lock(&resource_mutex);
        if (pnres.sk[res] == sk) {
-               rcu_assign_pointer(pnres.sk[res], NULL);
+               RCU_INIT_POINTER(pnres.sk[res], NULL);
                ret = 0;
        }
        mutex_unlock(&resource_mutex);
        mutex_lock(&resource_mutex);
        for (res = 0; res < 256; res++) {
                if (pnres.sk[res] == sk) {
-                       rcu_assign_pointer(pnres.sk[res], NULL);
+                       RCU_INIT_POINTER(pnres.sk[res], NULL);
                        match++;
                }
        }
 
                                      lockdep_is_held(&net_family_lock)))
                err = -EEXIST;
        else {
-               rcu_assign_pointer(net_families[ops->family], ops);
+               RCU_INIT_POINTER(net_families[ops->family], ops);
                err = 0;
        }
        spin_unlock(&net_family_lock);
        BUG_ON(family < 0 || family >= NPROTO);
 
        spin_lock(&net_family_lock);
-       rcu_assign_pointer(net_families[family], NULL);
+       RCU_INIT_POINTER(net_families[family], NULL);
        spin_unlock(&net_family_lock);
 
        synchronize_rcu();
 
        if (!test_bit(RPCAUTH_CRED_NEW, &cred->cr_flags))
                return;
        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);
        smp_mb__before_clear_bit();
        clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags);
        struct gss_auth *gss_auth = container_of(cred->cr_auth, struct gss_auth, rpc_auth);
        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);
        if (ctx)
                gss_put_ctx(ctx);
 
        if (nlsk == NULL)
                return -ENOMEM;
        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;
 }
 
 {
        struct net *net;
        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();
        list_for_each_entry(net, net_exit_list, exit_list)
                netlink_kernel_release(net->xfrm.nlsk_stash);