Skip to content

Commit 73f4001

Browse files
Gao fengummakynes
Gao feng
authored andcommitted
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>
1 parent b7ff3a1 commit 73f4001

File tree

3 files changed

+43
-32
lines changed

3 files changed

+43
-32
lines changed

include/net/netfilter/nf_conntrack_timestamp.h

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,28 @@ static inline void nf_ct_set_tstamp(struct net *net, bool enable)
4848
}
4949

5050
#ifdef CONFIG_NF_CONNTRACK_TIMESTAMP
51-
extern int nf_conntrack_tstamp_init(struct net *net);
52-
extern void nf_conntrack_tstamp_fini(struct net *net);
51+
extern int nf_conntrack_tstamp_pernet_init(struct net *net);
52+
extern void nf_conntrack_tstamp_pernet_fini(struct net *net);
53+
54+
extern int nf_conntrack_tstamp_init(void);
55+
extern void nf_conntrack_tstamp_fini(void);
5356
#else
54-
static inline int nf_conntrack_tstamp_init(struct net *net)
57+
static inline int nf_conntrack_tstamp_pernet_init(struct net *net)
58+
{
59+
return 0;
60+
}
61+
62+
static inline void nf_conntrack_tstamp_pernet_fini(struct net *net)
63+
{
64+
return;
65+
}
66+
67+
static inline int nf_conntrack_tstamp_init(void)
5568
{
5669
return 0;
5770
}
5871

59-
static inline void nf_conntrack_tstamp_fini(struct net *net)
72+
static inline void nf_conntrack_tstamp_fini(void)
6073
{
6174
return;
6275
}

net/netfilter/nf_conntrack_core.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1348,6 +1348,7 @@ void nf_conntrack_cleanup_end(void)
13481348
#ifdef CONFIG_NF_CONNTRACK_ZONES
13491349
nf_ct_extend_unregister(&nf_ct_zone_extend);
13501350
#endif
1351+
nf_conntrack_tstamp_fini();
13511352
nf_conntrack_acct_fini();
13521353
nf_conntrack_expect_fini();
13531354
}
@@ -1378,7 +1379,7 @@ void nf_conntrack_cleanup_net(struct net *net)
13781379
nf_conntrack_helper_fini(net);
13791380
nf_conntrack_timeout_fini(net);
13801381
nf_conntrack_ecache_fini(net);
1381-
nf_conntrack_tstamp_fini(net);
1382+
nf_conntrack_tstamp_pernet_fini(net);
13821383
nf_conntrack_acct_pernet_fini(net);
13831384
nf_conntrack_expect_pernet_fini(net);
13841385
kmem_cache_destroy(net->ct.nf_conntrack_cachep);
@@ -1512,6 +1513,10 @@ int nf_conntrack_init_start(void)
15121513
if (ret < 0)
15131514
goto err_acct;
15141515

1516+
ret = nf_conntrack_tstamp_init();
1517+
if (ret < 0)
1518+
goto err_tstamp;
1519+
15151520
#ifdef CONFIG_NF_CONNTRACK_ZONES
15161521
ret = nf_ct_extend_register(&nf_ct_zone_extend);
15171522
if (ret < 0)
@@ -1529,8 +1534,10 @@ int nf_conntrack_init_start(void)
15291534

15301535
#ifdef CONFIG_NF_CONNTRACK_ZONES
15311536
err_extend:
1532-
nf_conntrack_acct_fini();
1537+
nf_conntrack_tstamp_fini();
15331538
#endif
1539+
err_tstamp:
1540+
nf_conntrack_acct_fini();
15341541
err_acct:
15351542
nf_conntrack_expect_fini();
15361543
err_expect:
@@ -1596,7 +1603,7 @@ int nf_conntrack_init_net(struct net *net)
15961603
ret = nf_conntrack_acct_pernet_init(net);
15971604
if (ret < 0)
15981605
goto err_acct;
1599-
ret = nf_conntrack_tstamp_init(net);
1606+
ret = nf_conntrack_tstamp_pernet_init(net);
16001607
if (ret < 0)
16011608
goto err_tstamp;
16021609
ret = nf_conntrack_ecache_init(net);
@@ -1627,7 +1634,7 @@ int nf_conntrack_init_net(struct net *net)
16271634
err_timeout:
16281635
nf_conntrack_ecache_fini(net);
16291636
err_ecache:
1630-
nf_conntrack_tstamp_fini(net);
1637+
nf_conntrack_tstamp_pernet_fini(net);
16311638
err_tstamp:
16321639
nf_conntrack_acct_pernet_fini(net);
16331640
err_acct:

net/netfilter/nf_conntrack_timestamp.c

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -88,37 +88,28 @@ static void nf_conntrack_tstamp_fini_sysctl(struct net *net)
8888
}
8989
#endif
9090

91-
int nf_conntrack_tstamp_init(struct net *net)
91+
int nf_conntrack_tstamp_pernet_init(struct net *net)
9292
{
93-
int ret;
94-
9593
net->ct.sysctl_tstamp = nf_ct_tstamp;
94+
return nf_conntrack_tstamp_init_sysctl(net);
95+
}
9696

97-
if (net_eq(net, &init_net)) {
98-
ret = nf_ct_extend_register(&tstamp_extend);
99-
if (ret < 0) {
100-
printk(KERN_ERR "nf_ct_tstamp: Unable to register "
101-
"extension\n");
102-
goto out_extend_register;
103-
}
104-
}
97+
void nf_conntrack_tstamp_pernet_fini(struct net *net)
98+
{
99+
nf_conntrack_tstamp_fini_sysctl(net);
100+
nf_ct_extend_unregister(&tstamp_extend);
101+
}
105102

106-
ret = nf_conntrack_tstamp_init_sysctl(net);
103+
int nf_conntrack_tstamp_init(void)
104+
{
105+
int ret;
106+
ret = nf_ct_extend_register(&tstamp_extend);
107107
if (ret < 0)
108-
goto out_sysctl;
109-
110-
return 0;
111-
112-
out_sysctl:
113-
if (net_eq(net, &init_net))
114-
nf_ct_extend_unregister(&tstamp_extend);
115-
out_extend_register:
108+
pr_err("nf_ct_tstamp: Unable to register extension\n");
116109
return ret;
117110
}
118111

119-
void nf_conntrack_tstamp_fini(struct net *net)
112+
void nf_conntrack_tstamp_fini(void)
120113
{
121-
nf_conntrack_tstamp_fini_sysctl(net);
122-
if (net_eq(net, &init_net))
123-
nf_ct_extend_unregister(&tstamp_extend);
114+
nf_ct_extend_unregister(&tstamp_extend);
124115
}

0 commit comments

Comments
 (0)