Commit 32b51f92 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller

net: Simplify conntrack_proto_dccp pernet operations.

Take advantage of the new pernet automatic storage management,
and stop using compatibility network namespace functions.
Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 23c049ca
...@@ -810,12 +810,7 @@ static struct nf_conntrack_l4proto dccp_proto6 __read_mostly = { ...@@ -810,12 +810,7 @@ static struct nf_conntrack_l4proto dccp_proto6 __read_mostly = {
static __net_init int dccp_net_init(struct net *net) static __net_init int dccp_net_init(struct net *net)
{ {
struct dccp_net *dn; struct dccp_net *dn = dccp_pernet(net);
int err;
dn = kmalloc(sizeof(*dn), GFP_KERNEL);
if (!dn)
return -ENOMEM;
/* default values */ /* default values */
dn->dccp_loose = 1; dn->dccp_loose = 1;
...@@ -827,16 +822,11 @@ static __net_init int dccp_net_init(struct net *net) ...@@ -827,16 +822,11 @@ static __net_init int dccp_net_init(struct net *net)
dn->dccp_timeout[CT_DCCP_CLOSING] = 64 * HZ; dn->dccp_timeout[CT_DCCP_CLOSING] = 64 * HZ;
dn->dccp_timeout[CT_DCCP_TIMEWAIT] = 2 * DCCP_MSL; dn->dccp_timeout[CT_DCCP_TIMEWAIT] = 2 * DCCP_MSL;
err = net_assign_generic(net, dccp_net_id, dn);
if (err)
goto out;
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
err = -ENOMEM;
dn->sysctl_table = kmemdup(dccp_sysctl_table, dn->sysctl_table = kmemdup(dccp_sysctl_table,
sizeof(dccp_sysctl_table), GFP_KERNEL); sizeof(dccp_sysctl_table), GFP_KERNEL);
if (!dn->sysctl_table) if (!dn->sysctl_table)
goto out; return -ENOMEM;
dn->sysctl_table[0].data = &dn->dccp_timeout[CT_DCCP_REQUEST]; dn->sysctl_table[0].data = &dn->dccp_timeout[CT_DCCP_REQUEST];
dn->sysctl_table[1].data = &dn->dccp_timeout[CT_DCCP_RESPOND]; dn->sysctl_table[1].data = &dn->dccp_timeout[CT_DCCP_RESPOND];
...@@ -851,15 +841,11 @@ static __net_init int dccp_net_init(struct net *net) ...@@ -851,15 +841,11 @@ static __net_init int dccp_net_init(struct net *net)
nf_net_netfilter_sysctl_path, dn->sysctl_table); nf_net_netfilter_sysctl_path, dn->sysctl_table);
if (!dn->sysctl_header) { if (!dn->sysctl_header) {
kfree(dn->sysctl_table); kfree(dn->sysctl_table);
goto out; return -ENOMEM;
} }
#endif #endif
return 0; return 0;
out:
kfree(dn);
return err;
} }
static __net_exit void dccp_net_exit(struct net *net) static __net_exit void dccp_net_exit(struct net *net)
...@@ -869,21 +855,20 @@ static __net_exit void dccp_net_exit(struct net *net) ...@@ -869,21 +855,20 @@ static __net_exit void dccp_net_exit(struct net *net)
unregister_net_sysctl_table(dn->sysctl_header); unregister_net_sysctl_table(dn->sysctl_header);
kfree(dn->sysctl_table); kfree(dn->sysctl_table);
#endif #endif
kfree(dn);
net_assign_generic(net, dccp_net_id, NULL);
} }
static struct pernet_operations dccp_net_ops = { static struct pernet_operations dccp_net_ops = {
.init = dccp_net_init, .init = dccp_net_init,
.exit = dccp_net_exit, .exit = dccp_net_exit,
.id = &dccp_net_id,
.size = sizeof(struct dccp_net),
}; };
static int __init nf_conntrack_proto_dccp_init(void) static int __init nf_conntrack_proto_dccp_init(void)
{ {
int err; int err;
err = register_pernet_gen_subsys(&dccp_net_id, &dccp_net_ops); err = register_pernet_subsys(&dccp_net_ops);
if (err < 0) if (err < 0)
goto err1; goto err1;
...@@ -899,14 +884,14 @@ static int __init nf_conntrack_proto_dccp_init(void) ...@@ -899,14 +884,14 @@ static int __init nf_conntrack_proto_dccp_init(void)
err3: err3:
nf_conntrack_l4proto_unregister(&dccp_proto4); nf_conntrack_l4proto_unregister(&dccp_proto4);
err2: err2:
unregister_pernet_gen_subsys(dccp_net_id, &dccp_net_ops); unregister_pernet_subsys(&dccp_net_ops);
err1: err1:
return err; return err;
} }
static void __exit nf_conntrack_proto_dccp_fini(void) static void __exit nf_conntrack_proto_dccp_fini(void)
{ {
unregister_pernet_gen_subsys(dccp_net_id, &dccp_net_ops); unregister_pernet_subsys(&dccp_net_ops);
nf_conntrack_l4proto_unregister(&dccp_proto6); nf_conntrack_l4proto_unregister(&dccp_proto6);
nf_conntrack_l4proto_unregister(&dccp_proto4); nf_conntrack_l4proto_unregister(&dccp_proto4);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment