aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorGao feng <gaofeng@cn.fujitsu.com>2013-01-21 17:10:27 -0500
committerPablo Neira Ayuso <pablo@netfilter.org>2013-01-23 06:55:39 -0500
commit73f4001a52c986114f540504d70b21e52eb0d92a (patch)
treedc14dd7bc44c9f49bdd14c7f4547ea56b89d8d50 /net
parentb7ff3a1fae78783e0ab1ef82f5978aeb89ddd16b (diff)
netfilter: nf_ct_tstamp: 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.c15
-rw-r--r--net/netfilter/nf_conntrack_timestamp.c39
2 files changed, 26 insertions, 28 deletions
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index f4c6d4a06a1a..20ebfff0a47e 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_tstamp_fini();
1351 nf_conntrack_acct_fini(); 1352 nf_conntrack_acct_fini();
1352 nf_conntrack_expect_fini(); 1353 nf_conntrack_expect_fini();
1353} 1354}
@@ -1378,7 +1379,7 @@ void nf_conntrack_cleanup_net(struct net *net)
1378 nf_conntrack_helper_fini(net); 1379 nf_conntrack_helper_fini(net);
1379 nf_conntrack_timeout_fini(net); 1380 nf_conntrack_timeout_fini(net);
1380 nf_conntrack_ecache_fini(net); 1381 nf_conntrack_ecache_fini(net);
1381 nf_conntrack_tstamp_fini(net); 1382 nf_conntrack_tstamp_pernet_fini(net);
1382 nf_conntrack_acct_pernet_fini(net); 1383 nf_conntrack_acct_pernet_fini(net);
1383 nf_conntrack_expect_pernet_fini(net); 1384 nf_conntrack_expect_pernet_fini(net);
1384 kmem_cache_destroy(net->ct.nf_conntrack_cachep); 1385 kmem_cache_destroy(net->ct.nf_conntrack_cachep);
@@ -1512,6 +1513,10 @@ int nf_conntrack_init_start(void)
1512 if (ret < 0) 1513 if (ret < 0)
1513 goto err_acct; 1514 goto err_acct;
1514 1515
1516 ret = nf_conntrack_tstamp_init();
1517 if (ret < 0)
1518 goto err_tstamp;
1519
1515#ifdef CONFIG_NF_CONNTRACK_ZONES 1520#ifdef CONFIG_NF_CONNTRACK_ZONES
1516 ret = nf_ct_extend_register(&nf_ct_zone_extend); 1521 ret = nf_ct_extend_register(&nf_ct_zone_extend);
1517 if (ret < 0) 1522 if (ret < 0)
@@ -1529,8 +1534,10 @@ int nf_conntrack_init_start(void)
1529 1534
1530#ifdef CONFIG_NF_CONNTRACK_ZONES 1535#ifdef CONFIG_NF_CONNTRACK_ZONES
1531err_extend: 1536err_extend:
1532 nf_conntrack_acct_fini(); 1537 nf_conntrack_tstamp_fini();
1533#endif 1538#endif
1539err_tstamp:
1540 nf_conntrack_acct_fini();
1534err_acct: 1541err_acct:
1535 nf_conntrack_expect_fini(); 1542 nf_conntrack_expect_fini();
1536err_expect: 1543err_expect:
@@ -1596,7 +1603,7 @@ int nf_conntrack_init_net(struct net *net)
1596 ret = nf_conntrack_acct_pernet_init(net); 1603 ret = nf_conntrack_acct_pernet_init(net);
1597 if (ret < 0) 1604 if (ret < 0)
1598 goto err_acct; 1605 goto err_acct;
1599 ret = nf_conntrack_tstamp_init(net); 1606 ret = nf_conntrack_tstamp_pernet_init(net);
1600 if (ret < 0) 1607 if (ret < 0)
1601 goto err_tstamp; 1608 goto err_tstamp;
1602 ret = nf_conntrack_ecache_init(net); 1609 ret = nf_conntrack_ecache_init(net);
@@ -1627,7 +1634,7 @@ err_helper:
1627err_timeout: 1634err_timeout:
1628 nf_conntrack_ecache_fini(net); 1635 nf_conntrack_ecache_fini(net);
1629err_ecache: 1636err_ecache:
1630 nf_conntrack_tstamp_fini(net); 1637 nf_conntrack_tstamp_pernet_fini(net);
1631err_tstamp: 1638err_tstamp:
1632 nf_conntrack_acct_pernet_fini(net); 1639 nf_conntrack_acct_pernet_fini(net);
1633err_acct: 1640err_acct:
diff --git a/net/netfilter/nf_conntrack_timestamp.c b/net/netfilter/nf_conntrack_timestamp.c
index 7ea8026f07c9..902fb0a6b38a 100644
--- a/net/netfilter/nf_conntrack_timestamp.c
+++ b/net/netfilter/nf_conntrack_timestamp.c
@@ -88,37 +88,28 @@ static void nf_conntrack_tstamp_fini_sysctl(struct net *net)
88} 88}
89#endif 89#endif
90 90
91int nf_conntrack_tstamp_init(struct net *net) 91int nf_conntrack_tstamp_pernet_init(struct net *net)
92{ 92{
93 int ret;
94
95 net->ct.sysctl_tstamp = nf_ct_tstamp; 93 net->ct.sysctl_tstamp = nf_ct_tstamp;
94 return nf_conntrack_tstamp_init_sysctl(net);
95}
96 96
97 if (net_eq(net, &init_net)) { 97void nf_conntrack_tstamp_pernet_fini(struct net *net)
98 ret = nf_ct_extend_register(&tstamp_extend); 98{
99 if (ret < 0) { 99 nf_conntrack_tstamp_fini_sysctl(net);
100 printk(KERN_ERR "nf_ct_tstamp: Unable to register " 100 nf_ct_extend_unregister(&tstamp_extend);
101 "extension\n"); 101}
102 goto out_extend_register;
103 }
104 }
105 102
106 ret = nf_conntrack_tstamp_init_sysctl(net); 103int nf_conntrack_tstamp_init(void)
104{
105 int ret;
106 ret = nf_ct_extend_register(&tstamp_extend);
107 if (ret < 0) 107 if (ret < 0)
108 goto out_sysctl; 108 pr_err("nf_ct_tstamp: Unable to register extension\n");
109
110 return 0;
111
112out_sysctl:
113 if (net_eq(net, &init_net))
114 nf_ct_extend_unregister(&tstamp_extend);
115out_extend_register:
116 return ret; 109 return ret;
117} 110}
118 111
119void nf_conntrack_tstamp_fini(struct net *net) 112void nf_conntrack_tstamp_fini(void)
120{ 113{
121 nf_conntrack_tstamp_fini_sysctl(net); 114 nf_ct_extend_unregister(&tstamp_extend);
122 if (net_eq(net, &init_net))
123 nf_ct_extend_unregister(&tstamp_extend);
124} 115}