|
@@ -514,7 +514,7 @@ int nf_nat_protocol_register(const struct nf_nat_protocol *proto)
|
|
|
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;
|
|
@@ -525,7 +525,7 @@ EXPORT_SYMBOL(nf_nat_protocol_register);
|
|
|
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();
|
|
@@ -736,10 +736,10 @@ static int __init nf_nat_init(void)
|
|
|
/* 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 */
|
|
@@ -748,12 +748,12 @@ static int __init nf_nat_init(void)
|
|
|
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:
|
|
@@ -766,9 +766,9 @@ static void __exit nf_nat_cleanup(void)
|
|
|
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();
|
|
|
}
|
|
|
|