|
@@ -587,53 +587,50 @@ static void exp_proc_remove(struct net *net)
|
|
|
|
|
|
module_param_named(expect_hashsize, nf_ct_expect_hsize, uint, 0400);
|
|
|
|
|
|
-int nf_conntrack_expect_init(struct net *net)
|
|
|
+int nf_conntrack_expect_pernet_init(struct net *net)
|
|
|
{
|
|
|
int err = -ENOMEM;
|
|
|
|
|
|
- if (net_eq(net, &init_net)) {
|
|
|
- if (!nf_ct_expect_hsize) {
|
|
|
- nf_ct_expect_hsize = net->ct.htable_size / 256;
|
|
|
- if (!nf_ct_expect_hsize)
|
|
|
- nf_ct_expect_hsize = 1;
|
|
|
- }
|
|
|
- nf_ct_expect_max = nf_ct_expect_hsize * 4;
|
|
|
- }
|
|
|
-
|
|
|
net->ct.expect_count = 0;
|
|
|
net->ct.expect_hash = nf_ct_alloc_hashtable(&nf_ct_expect_hsize, 0);
|
|
|
if (net->ct.expect_hash == NULL)
|
|
|
goto err1;
|
|
|
|
|
|
- if (net_eq(net, &init_net)) {
|
|
|
- nf_ct_expect_cachep = kmem_cache_create("nf_conntrack_expect",
|
|
|
- sizeof(struct nf_conntrack_expect),
|
|
|
- 0, 0, NULL);
|
|
|
- if (!nf_ct_expect_cachep)
|
|
|
- goto err2;
|
|
|
- }
|
|
|
-
|
|
|
err = exp_proc_init(net);
|
|
|
if (err < 0)
|
|
|
- goto err3;
|
|
|
+ goto err2;
|
|
|
|
|
|
return 0;
|
|
|
-
|
|
|
-err3:
|
|
|
- if (net_eq(net, &init_net))
|
|
|
- kmem_cache_destroy(nf_ct_expect_cachep);
|
|
|
err2:
|
|
|
nf_ct_free_hashtable(net->ct.expect_hash, nf_ct_expect_hsize);
|
|
|
err1:
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
-void nf_conntrack_expect_fini(struct net *net)
|
|
|
+void nf_conntrack_expect_pernet_fini(struct net *net)
|
|
|
{
|
|
|
exp_proc_remove(net);
|
|
|
- if (net_eq(net, &init_net)) {
|
|
|
- rcu_barrier(); /* Wait for call_rcu() before destroy */
|
|
|
- kmem_cache_destroy(nf_ct_expect_cachep);
|
|
|
- }
|
|
|
nf_ct_free_hashtable(net->ct.expect_hash, nf_ct_expect_hsize);
|
|
|
}
|
|
|
+
|
|
|
+int nf_conntrack_expect_init(void)
|
|
|
+{
|
|
|
+ if (!nf_ct_expect_hsize) {
|
|
|
+ nf_ct_expect_hsize = nf_conntrack_htable_size / 256;
|
|
|
+ if (!nf_ct_expect_hsize)
|
|
|
+ nf_ct_expect_hsize = 1;
|
|
|
+ }
|
|
|
+ nf_ct_expect_max = nf_ct_expect_hsize * 4;
|
|
|
+ nf_ct_expect_cachep = kmem_cache_create("nf_conntrack_expect",
|
|
|
+ sizeof(struct nf_conntrack_expect),
|
|
|
+ 0, 0, NULL);
|
|
|
+ if (!nf_ct_expect_cachep)
|
|
|
+ return -ENOMEM;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+void nf_conntrack_expect_fini(void)
|
|
|
+{
|
|
|
+ rcu_barrier(); /* Wait for call_rcu() before destroy */
|
|
|
+ kmem_cache_destroy(nf_ct_expect_cachep);
|
|
|
+}
|