compile fixups for netfilter

This commit is contained in:
showp1984
2012-01-07 22:17:04 +01:00
committed by James Sullins
parent d4cd85c6fd
commit dcf41212a4
14 changed files with 47 additions and 41 deletions

View File

@@ -716,6 +716,12 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
#define RCU_INIT_POINTER(p, v) \ #define RCU_INIT_POINTER(p, v) \
p = (typeof(*v) __force __rcu *)(v) p = (typeof(*v) __force __rcu *)(v)
#define rcu_assign_pointer_nonull(p, v) \
({ \
if (!__builtin_constant_p(v)) \
smp_wmb(); \
(p) = (v); \
})
/* Infrastructure to implement the synchronize_() primitives. */ /* Infrastructure to implement the synchronize_() primitives. */
struct rcu_synchronize { struct rcu_synchronize {

View File

@@ -77,7 +77,7 @@ static void __exit nf_nat_amanda_fini(void)
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_assign_pointer_nonull(nf_nat_amanda_hook, help);
return 0; return 0;
} }

View File

@@ -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_assign_pointer_nonull(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_assign_pointer_nonull(nf_nat_protos[i], &nf_nat_unknown_protocol);
rcu_assign_pointer(nf_nat_protos[IPPROTO_TCP], &nf_nat_protocol_tcp); rcu_assign_pointer_nonull(nf_nat_protos[IPPROTO_TCP], &nf_nat_protocol_tcp);
rcu_assign_pointer(nf_nat_protos[IPPROTO_UDP], &nf_nat_protocol_udp); rcu_assign_pointer_nonull(nf_nat_protos[IPPROTO_UDP], &nf_nat_protocol_udp);
rcu_assign_pointer(nf_nat_protos[IPPROTO_ICMP], &nf_nat_protocol_icmp); rcu_assign_pointer_nonull(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_assign_pointer_nonull(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_assign_pointer_nonull(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_assign_pointer_nonull(nf_ct_nat_offset, nf_nat_get_offset);
return 0; return 0;
cleanup_extend: cleanup_extend:

View File

@@ -120,7 +120,7 @@ static void __exit nf_nat_ftp_fini(void)
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_assign_pointer_nonull(nf_nat_ftp_hook, nf_nat_ftp);
return 0; return 0;
} }

View File

@@ -581,15 +581,15 @@ 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_assign_pointer_nonull(set_h245_addr_hook, set_h245_addr);
rcu_assign_pointer(set_h225_addr_hook, set_h225_addr); rcu_assign_pointer_nonull(set_h225_addr_hook, set_h225_addr);
rcu_assign_pointer(set_sig_addr_hook, set_sig_addr); rcu_assign_pointer_nonull(set_sig_addr_hook, set_sig_addr);
rcu_assign_pointer(set_ras_addr_hook, set_ras_addr); rcu_assign_pointer_nonull(set_ras_addr_hook, set_ras_addr);
rcu_assign_pointer(nat_rtp_rtcp_hook, nat_rtp_rtcp); rcu_assign_pointer_nonull(nat_rtp_rtcp_hook, nat_rtp_rtcp);
rcu_assign_pointer(nat_t120_hook, nat_t120); rcu_assign_pointer_nonull(nat_t120_hook, nat_t120);
rcu_assign_pointer(nat_h245_hook, nat_h245); rcu_assign_pointer_nonull(nat_h245_hook, nat_h245);
rcu_assign_pointer(nat_callforwarding_hook, nat_callforwarding); rcu_assign_pointer_nonull(nat_callforwarding_hook, nat_callforwarding);
rcu_assign_pointer(nat_q931_hook, nat_q931); rcu_assign_pointer_nonull(nat_q931_hook, nat_q931);
return 0; return 0;
} }

View File

@@ -82,7 +82,7 @@ static void __exit nf_nat_irc_fini(void)
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_assign_pointer_nonull(nf_nat_irc_hook, help);
return 0; return 0;
} }

View File

@@ -282,16 +282,16 @@ 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_assign_pointer_nonull(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_assign_pointer_nonull(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_assign_pointer_nonull(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_assign_pointer_nonull(nf_nat_pptp_hook_expectfn, pptp_nat_expected);
return 0; return 0;
} }

View File

@@ -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_assign_pointer_nonull(nf_nat_sip_hook, ip_nat_sip);
rcu_assign_pointer(nf_nat_sip_seq_adjust_hook, ip_nat_sip_seq_adjust); rcu_assign_pointer_nonull(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_nonull(nf_nat_sip_expect_hook, ip_nat_sip_expect);
rcu_assign_pointer(nf_nat_sdp_addr_hook, ip_nat_sdp_addr); rcu_assign_pointer_nonull(nf_nat_sdp_addr_hook, ip_nat_sdp_addr);
rcu_assign_pointer(nf_nat_sdp_port_hook, ip_nat_sdp_port); rcu_assign_pointer_nonull(nf_nat_sdp_port_hook, ip_nat_sdp_port);
rcu_assign_pointer(nf_nat_sdp_session_hook, ip_nat_sdp_session); rcu_assign_pointer_nonull(nf_nat_sdp_session_hook, ip_nat_sdp_session);
rcu_assign_pointer(nf_nat_sdp_media_hook, ip_nat_sdp_media); rcu_assign_pointer_nonull(nf_nat_sdp_media_hook, ip_nat_sdp_media);
return 0; return 0;
} }

View File

@@ -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_assign_pointer_nonull(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) {

View File

@@ -43,7 +43,7 @@ static void __exit nf_nat_tftp_fini(void)
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_assign_pointer_nonull(nf_nat_tftp_hook, help);
return 0; return 0;
} }

View File

@@ -1576,8 +1576,8 @@ 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_assign_pointer_nonull(ip_ct_attach, nf_conntrack_attach);
rcu_assign_pointer(nf_ct_destroy, destroy_conntrack); rcu_assign_pointer_nonull(nf_ct_destroy, destroy_conntrack);
/* Howto get NAT offsets */ /* Howto get NAT offsets */
rcu_assign_pointer(nf_ct_nat_offset, NULL); rcu_assign_pointer(nf_ct_nat_offset, NULL);

View File

@@ -207,7 +207,7 @@ void nf_conntrack_l3proto_unregister(struct nf_conntrack_l3proto *proto)
BUG_ON(rcu_dereference_protected(nf_ct_l3protos[proto->l3proto], BUG_ON(rcu_dereference_protected(nf_ct_l3protos[proto->l3proto],
lockdep_is_held(&nf_ct_proto_mutex) lockdep_is_held(&nf_ct_proto_mutex)
) != proto); ) != proto);
rcu_assign_pointer(nf_ct_l3protos[proto->l3proto], rcu_assign_pointer_nonull(nf_ct_l3protos[proto->l3proto],
&nf_conntrack_l3proto_generic); &nf_conntrack_l3proto_generic);
nf_ct_l3proto_unregister_sysctl(proto); nf_ct_l3proto_unregister_sysctl(proto);
mutex_unlock(&nf_ct_proto_mutex); mutex_unlock(&nf_ct_proto_mutex);
@@ -322,7 +322,7 @@ int nf_conntrack_l4proto_register(struct nf_conntrack_l4proto *l4proto)
if (l4proto->nlattr_tuple_size) if (l4proto->nlattr_tuple_size)
l4proto->nla_size += 3 * l4proto->nlattr_tuple_size(); l4proto->nla_size += 3 * l4proto->nlattr_tuple_size();
rcu_assign_pointer(nf_ct_protos[l4proto->l3proto][l4proto->l4proto], rcu_assign_pointer_nonull(nf_ct_protos[l4proto->l3proto][l4proto->l4proto],
l4proto); l4proto);
out_unlock: out_unlock:
@@ -342,7 +342,7 @@ void nf_conntrack_l4proto_unregister(struct nf_conntrack_l4proto *l4proto)
nf_ct_protos[l4proto->l3proto][l4proto->l4proto], nf_ct_protos[l4proto->l3proto][l4proto->l4proto],
lockdep_is_held(&nf_ct_proto_mutex) lockdep_is_held(&nf_ct_proto_mutex)
) != l4proto); ) != l4proto);
rcu_assign_pointer(nf_ct_protos[l4proto->l3proto][l4proto->l4proto], rcu_assign_pointer_nonull(nf_ct_protos[l4proto->l3proto][l4proto->l4proto],
&nf_conntrack_l4proto_generic); &nf_conntrack_l4proto_generic);
nf_ct_l4proto_unregister_sysctl(l4proto); nf_ct_l4proto_unregister_sysctl(l4proto);
mutex_unlock(&nf_ct_proto_mutex); mutex_unlock(&nf_ct_proto_mutex);
@@ -367,7 +367,7 @@ int nf_conntrack_proto_init(void)
return err; return err;
for (i = 0; i < AF_MAX; i++) for (i = 0; i < AF_MAX; i++)
rcu_assign_pointer(nf_ct_l3protos[i], rcu_assign_pointer_nonull(nf_ct_l3protos[i],
&nf_conntrack_l3proto_generic); &nf_conntrack_l3proto_generic);
return 0; return 0;
} }

View File

@@ -1265,7 +1265,7 @@ static void if_tag_stat_update(const char *ifname, uid_t uid,
struct data_counters *uid_tag_counters; struct data_counters *uid_tag_counters;
struct sock_tag *sock_tag_entry; struct sock_tag *sock_tag_entry;
struct iface_stat *iface_entry; struct iface_stat *iface_entry;
struct tag_stat *new_tag_stat; struct tag_stat *new_tag_stat=0;
MT_DEBUG("qtaguid: if_tag_stat_update(ifname=%s " MT_DEBUG("qtaguid: if_tag_stat_update(ifname=%s "
"uid=%u sk=%p dir=%d proto=%d bytes=%d)\n", "uid=%u sk=%p dir=%d proto=%d bytes=%d)\n",
ifname, uid, sk, direction, proto, bytes); ifname, uid, sk, direction, proto, bytes);

View File

@@ -675,7 +675,7 @@ struct Qdisc *dev_graft_qdisc(struct netdev_queue *dev_queue,
if (qdisc == NULL) if (qdisc == NULL)
qdisc = &noop_qdisc; qdisc = &noop_qdisc;
dev_queue->qdisc_sleeping = qdisc; dev_queue->qdisc_sleeping = qdisc;
rcu_assign_pointer(dev_queue->qdisc, &noop_qdisc); rcu_assign_pointer_nonull(dev_queue->qdisc, &noop_qdisc);
spin_unlock_bh(root_lock); spin_unlock_bh(root_lock);