aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorGao feng <gaofeng@cn.fujitsu.com>2013-01-21 17:10:31 -0500
committerPablo Neira Ayuso <pablo@netfilter.org>2013-01-23 06:56:23 -0500
commit5f69b8f5218dc303cbcb6f71d221c27d3cd17ebb (patch)
treeb904cb0d77fe07d3ac67bc7b9f25bbf13c5322ca /net
parent5e615b220087c5551f486c967831cecdfd338dbe (diff)
netfilter: nf_ct_labels: move initialization out of pernet_operations
Move the global initial codes to the module_init/exit context. Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net')
-rw-r--r--net/netfilter/nf_conntrack_core.c17
-rw-r--r--net/netfilter/nf_conntrack_labels.c11
2 files changed, 12 insertions, 16 deletions
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 06b8cdb5e620..a4a3bcf77627 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -1348,6 +1348,7 @@ void nf_conntrack_cleanup_end(void)
1348#ifdef CONFIG_NF_CONNTRACK_ZONES 1348#ifdef CONFIG_NF_CONNTRACK_ZONES
1349 nf_ct_extend_unregister(&nf_ct_zone_extend); 1349 nf_ct_extend_unregister(&nf_ct_zone_extend);
1350#endif 1350#endif
1351 nf_conntrack_labels_fini();
1351 nf_conntrack_helper_fini(); 1352 nf_conntrack_helper_fini();
1352 nf_conntrack_timeout_fini(); 1353 nf_conntrack_timeout_fini();
1353 nf_conntrack_ecache_fini(); 1354 nf_conntrack_ecache_fini();
@@ -1378,7 +1379,6 @@ void nf_conntrack_cleanup_net(struct net *net)
1378 1379
1379 nf_ct_free_hashtable(net->ct.hash, net->ct.htable_size); 1380 nf_ct_free_hashtable(net->ct.hash, net->ct.htable_size);
1380 nf_conntrack_proto_fini(net); 1381 nf_conntrack_proto_fini(net);
1381 nf_conntrack_labels_fini(net);
1382 nf_conntrack_helper_pernet_fini(net); 1382 nf_conntrack_helper_pernet_fini(net);
1383 nf_conntrack_ecache_pernet_fini(net); 1383 nf_conntrack_ecache_pernet_fini(net);
1384 nf_conntrack_tstamp_pernet_fini(net); 1384 nf_conntrack_tstamp_pernet_fini(net);
@@ -1531,6 +1531,10 @@ int nf_conntrack_init_start(void)
1531 if (ret < 0) 1531 if (ret < 0)
1532 goto err_helper; 1532 goto err_helper;
1533 1533
1534 ret = nf_conntrack_labels_init();
1535 if (ret < 0)
1536 goto err_labels;
1537
1534#ifdef CONFIG_NF_CONNTRACK_ZONES 1538#ifdef CONFIG_NF_CONNTRACK_ZONES
1535 ret = nf_ct_extend_register(&nf_ct_zone_extend); 1539 ret = nf_ct_extend_register(&nf_ct_zone_extend);
1536 if (ret < 0) 1540 if (ret < 0)
@@ -1548,8 +1552,10 @@ int nf_conntrack_init_start(void)
1548 1552
1549#ifdef CONFIG_NF_CONNTRACK_ZONES 1553#ifdef CONFIG_NF_CONNTRACK_ZONES
1550err_extend: 1554err_extend:
1551 nf_conntrack_helper_fini(); 1555 nf_conntrack_labels_fini();
1552#endif 1556#endif
1557err_labels:
1558 nf_conntrack_helper_fini();
1553err_helper: 1559err_helper:
1554 nf_conntrack_timeout_fini(); 1560 nf_conntrack_timeout_fini();
1555err_timeout: 1561err_timeout:
@@ -1632,19 +1638,12 @@ int nf_conntrack_init_net(struct net *net)
1632 ret = nf_conntrack_helper_pernet_init(net); 1638 ret = nf_conntrack_helper_pernet_init(net);
1633 if (ret < 0) 1639 if (ret < 0)
1634 goto err_helper; 1640 goto err_helper;
1635
1636 ret = nf_conntrack_labels_init(net);
1637 if (ret < 0)
1638 goto err_labels;
1639
1640 ret = nf_conntrack_proto_init(net); 1641 ret = nf_conntrack_proto_init(net);
1641 if (ret < 0) 1642 if (ret < 0)
1642 goto err_proto; 1643 goto err_proto;
1643 return 0; 1644 return 0;
1644 1645
1645err_proto: 1646err_proto:
1646 nf_conntrack_labels_fini(net);
1647err_labels:
1648 nf_conntrack_helper_pernet_fini(net); 1647 nf_conntrack_helper_pernet_fini(net);
1649err_helper: 1648err_helper:
1650 nf_conntrack_ecache_pernet_fini(net); 1649 nf_conntrack_ecache_pernet_fini(net);
diff --git a/net/netfilter/nf_conntrack_labels.c b/net/netfilter/nf_conntrack_labels.c
index e1d1eb850e7f..8fe2e99428b7 100644
--- a/net/netfilter/nf_conntrack_labels.c
+++ b/net/netfilter/nf_conntrack_labels.c
@@ -101,15 +101,12 @@ static struct nf_ct_ext_type labels_extend __read_mostly = {
101 .id = NF_CT_EXT_LABELS, 101 .id = NF_CT_EXT_LABELS,
102}; 102};
103 103
104int nf_conntrack_labels_init(struct net *net) 104int nf_conntrack_labels_init(void)
105{ 105{
106 if (net_eq(net, &init_net)) 106 return nf_ct_extend_register(&labels_extend);
107 return nf_ct_extend_register(&labels_extend);
108 return 0;
109} 107}
110 108
111void nf_conntrack_labels_fini(struct net *net) 109void nf_conntrack_labels_fini(void)
112{ 110{
113 if (net_eq(net, &init_net)) 111 nf_ct_extend_unregister(&labels_extend);
114 nf_ct_extend_unregister(&labels_extend);
115} 112}