Skip to content

Commit

Permalink
net: Simplify pppoe pernet operations.
Browse files Browse the repository at this point in the history
Take advantage of the new pernet automatic storage management,
and stop using compatibility network namespace functions.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric W. Biederman authored and David S. Miller committed Dec 2, 2009
1 parent 741a6fa commit c879a6f
Showing 1 changed file with 8 additions and 30 deletions.
38 changes: 8 additions & 30 deletions drivers/net/pppoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -1139,59 +1139,37 @@ static struct pppox_proto pppoe_proto = {

static __net_init int pppoe_init_net(struct net *net)
{
struct pppoe_net *pn;
struct pppoe_net *pn = pppoe_pernet(net);
struct proc_dir_entry *pde;
int err;

pn = kzalloc(sizeof(*pn), GFP_KERNEL);
if (!pn)
return -ENOMEM;

rwlock_init(&pn->hash_lock);

err = net_assign_generic(net, pppoe_net_id, pn);
if (err)
goto out;

pde = proc_net_fops_create(net, "pppoe", S_IRUGO, &pppoe_seq_fops);
#ifdef CONFIG_PROC_FS
if (!pde) {
err = -ENOMEM;
goto out;
}
if (!pde)
return -ENOMEM;
#endif

return 0;

out:
kfree(pn);
return err;
}

static __net_exit void pppoe_exit_net(struct net *net)
{
struct pppoe_net *pn;

proc_net_remove(net, "pppoe");
pn = net_generic(net, pppoe_net_id);
/*
* if someone has cached our net then
* further net_generic call will return NULL
*/
net_assign_generic(net, pppoe_net_id, NULL);
kfree(pn);
}

static struct pernet_operations pppoe_net_ops = {
.init = pppoe_init_net,
.exit = pppoe_exit_net,
.id = &pppoe_net_id,
.size = sizeof(struct pppoe_net),
};

static int __init pppoe_init(void)
{
int err;

err = register_pernet_gen_device(&pppoe_net_id, &pppoe_net_ops);
err = register_pernet_device(&pppoe_net_ops);
if (err)
goto out;

Expand All @@ -1212,7 +1190,7 @@ static int __init pppoe_init(void)
out_unregister_pppoe_proto:
proto_unregister(&pppoe_sk_proto);
out_unregister_net_ops:
unregister_pernet_gen_device(pppoe_net_id, &pppoe_net_ops);
unregister_pernet_device(&pppoe_net_ops);
out:
return err;
}
Expand All @@ -1224,7 +1202,7 @@ static void __exit pppoe_exit(void)
dev_remove_pack(&pppoes_ptype);
unregister_pppox_proto(PX_PROTO_OE);
proto_unregister(&pppoe_sk_proto);
unregister_pernet_gen_device(pppoe_net_id, &pppoe_net_ops);
unregister_pernet_device(&pppoe_net_ops);
}

module_init(pppoe_init);
Expand Down

0 comments on commit c879a6f

Please sign in to comment.