diff options
author | Gao feng <gaofeng@cn.fujitsu.com> | 2013-01-21 17:10:26 -0500 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-01-23 06:55:29 -0500 |
commit | b7ff3a1fae78783e0ab1ef82f5978aeb89ddd16b (patch) | |
tree | f8367cc6601a911b8a88de7db697c33c9df48e89 /net | |
parent | 83b4dbe19844b5472a8f44b6cf1d88693c080ef7 (diff) |
netfilter: nf_ct_acct: 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_acct.c | 36 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_core.c | 15 |
2 files changed, 24 insertions, 27 deletions
diff --git a/net/netfilter/nf_conntrack_acct.c b/net/netfilter/nf_conntrack_acct.c index 7df424e2d10c..2d3030ab5b61 100644 --- a/net/netfilter/nf_conntrack_acct.c +++ b/net/netfilter/nf_conntrack_acct.c | |||
@@ -106,36 +106,26 @@ static void nf_conntrack_acct_fini_sysctl(struct net *net) | |||
106 | } | 106 | } |
107 | #endif | 107 | #endif |
108 | 108 | ||
109 | int nf_conntrack_acct_init(struct net *net) | 109 | int nf_conntrack_acct_pernet_init(struct net *net) |
110 | { | 110 | { |
111 | int ret; | ||
112 | |||
113 | net->ct.sysctl_acct = nf_ct_acct; | 111 | net->ct.sysctl_acct = nf_ct_acct; |
112 | return nf_conntrack_acct_init_sysctl(net); | ||
113 | } | ||
114 | 114 | ||
115 | if (net_eq(net, &init_net)) { | 115 | void nf_conntrack_acct_pernet_fini(struct net *net) |
116 | ret = nf_ct_extend_register(&acct_extend); | 116 | { |
117 | if (ret < 0) { | 117 | nf_conntrack_acct_fini_sysctl(net); |
118 | printk(KERN_ERR "nf_conntrack_acct: Unable to register extension\n"); | 118 | } |
119 | goto out_extend_register; | ||
120 | } | ||
121 | } | ||
122 | 119 | ||
123 | ret = nf_conntrack_acct_init_sysctl(net); | 120 | int nf_conntrack_acct_init(void) |
121 | { | ||
122 | int ret = nf_ct_extend_register(&acct_extend); | ||
124 | if (ret < 0) | 123 | if (ret < 0) |
125 | goto out_sysctl; | 124 | pr_err("nf_conntrack_acct: Unable to register extension\n"); |
126 | |||
127 | return 0; | ||
128 | |||
129 | out_sysctl: | ||
130 | if (net_eq(net, &init_net)) | ||
131 | nf_ct_extend_unregister(&acct_extend); | ||
132 | out_extend_register: | ||
133 | return ret; | 125 | return ret; |
134 | } | 126 | } |
135 | 127 | ||
136 | void nf_conntrack_acct_fini(struct net *net) | 128 | void nf_conntrack_acct_fini(void) |
137 | { | 129 | { |
138 | nf_conntrack_acct_fini_sysctl(net); | 130 | nf_ct_extend_unregister(&acct_extend); |
139 | if (net_eq(net, &init_net)) | ||
140 | nf_ct_extend_unregister(&acct_extend); | ||
141 | } | 131 | } |
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index a3cca572412c..f4c6d4a06a1a 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_acct_fini(); | ||
1351 | nf_conntrack_expect_fini(); | 1352 | nf_conntrack_expect_fini(); |
1352 | } | 1353 | } |
1353 | 1354 | ||
@@ -1378,7 +1379,7 @@ void nf_conntrack_cleanup_net(struct net *net) | |||
1378 | nf_conntrack_timeout_fini(net); | 1379 | nf_conntrack_timeout_fini(net); |
1379 | nf_conntrack_ecache_fini(net); | 1380 | nf_conntrack_ecache_fini(net); |
1380 | nf_conntrack_tstamp_fini(net); | 1381 | nf_conntrack_tstamp_fini(net); |
1381 | nf_conntrack_acct_fini(net); | 1382 | nf_conntrack_acct_pernet_fini(net); |
1382 | nf_conntrack_expect_pernet_fini(net); | 1383 | nf_conntrack_expect_pernet_fini(net); |
1383 | kmem_cache_destroy(net->ct.nf_conntrack_cachep); | 1384 | kmem_cache_destroy(net->ct.nf_conntrack_cachep); |
1384 | kfree(net->ct.slabname); | 1385 | kfree(net->ct.slabname); |
@@ -1507,6 +1508,10 @@ int nf_conntrack_init_start(void) | |||
1507 | if (ret < 0) | 1508 | if (ret < 0) |
1508 | goto err_expect; | 1509 | goto err_expect; |
1509 | 1510 | ||
1511 | ret = nf_conntrack_acct_init(); | ||
1512 | if (ret < 0) | ||
1513 | goto err_acct; | ||
1514 | |||
1510 | #ifdef CONFIG_NF_CONNTRACK_ZONES | 1515 | #ifdef CONFIG_NF_CONNTRACK_ZONES |
1511 | ret = nf_ct_extend_register(&nf_ct_zone_extend); | 1516 | ret = nf_ct_extend_register(&nf_ct_zone_extend); |
1512 | if (ret < 0) | 1517 | if (ret < 0) |
@@ -1524,8 +1529,10 @@ int nf_conntrack_init_start(void) | |||
1524 | 1529 | ||
1525 | #ifdef CONFIG_NF_CONNTRACK_ZONES | 1530 | #ifdef CONFIG_NF_CONNTRACK_ZONES |
1526 | err_extend: | 1531 | err_extend: |
1527 | nf_conntrack_expect_fini(); | 1532 | nf_conntrack_acct_fini(); |
1528 | #endif | 1533 | #endif |
1534 | err_acct: | ||
1535 | nf_conntrack_expect_fini(); | ||
1529 | err_expect: | 1536 | err_expect: |
1530 | return ret; | 1537 | return ret; |
1531 | } | 1538 | } |
@@ -1586,7 +1593,7 @@ int nf_conntrack_init_net(struct net *net) | |||
1586 | ret = nf_conntrack_expect_pernet_init(net); | 1593 | ret = nf_conntrack_expect_pernet_init(net); |
1587 | if (ret < 0) | 1594 | if (ret < 0) |
1588 | goto err_expect; | 1595 | goto err_expect; |
1589 | ret = nf_conntrack_acct_init(net); | 1596 | ret = nf_conntrack_acct_pernet_init(net); |
1590 | if (ret < 0) | 1597 | if (ret < 0) |
1591 | goto err_acct; | 1598 | goto err_acct; |
1592 | ret = nf_conntrack_tstamp_init(net); | 1599 | ret = nf_conntrack_tstamp_init(net); |
@@ -1622,7 +1629,7 @@ err_timeout: | |||
1622 | err_ecache: | 1629 | err_ecache: |
1623 | nf_conntrack_tstamp_fini(net); | 1630 | nf_conntrack_tstamp_fini(net); |
1624 | err_tstamp: | 1631 | err_tstamp: |
1625 | nf_conntrack_acct_fini(net); | 1632 | nf_conntrack_acct_pernet_fini(net); |
1626 | err_acct: | 1633 | err_acct: |
1627 | nf_conntrack_expect_pernet_fini(net); | 1634 | nf_conntrack_expect_pernet_fini(net); |
1628 | err_expect: | 1635 | err_expect: |