mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
net,pppoe: fixup module init/exit subsequent calls
pernet data should allocated first and freed last on module init/exit routines otherwise it's possible to have unserialized calls to packet handling routines. Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bbd8a0d3a3
commit
07f6642ee9
1 changed files with 11 additions and 11 deletions
|
@ -1185,40 +1185,40 @@ static int __init pppoe_init(void)
|
|||
{
|
||||
int err;
|
||||
|
||||
err = proto_register(&pppoe_sk_proto, 0);
|
||||
err = register_pernet_gen_device(&pppoe_net_id, &pppoe_net_ops);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
err = proto_register(&pppoe_sk_proto, 0);
|
||||
if (err)
|
||||
goto out_unregister_net_ops;
|
||||
|
||||
err = register_pppox_proto(PX_PROTO_OE, &pppoe_proto);
|
||||
if (err)
|
||||
goto out_unregister_pppoe_proto;
|
||||
|
||||
err = register_pernet_gen_device(&pppoe_net_id, &pppoe_net_ops);
|
||||
if (err)
|
||||
goto out_unregister_pppox_proto;
|
||||
|
||||
dev_add_pack(&pppoes_ptype);
|
||||
dev_add_pack(&pppoed_ptype);
|
||||
register_netdevice_notifier(&pppoe_notifier);
|
||||
|
||||
return 0;
|
||||
|
||||
out_unregister_pppox_proto:
|
||||
unregister_pppox_proto(PX_PROTO_OE);
|
||||
out_unregister_pppoe_proto:
|
||||
proto_unregister(&pppoe_sk_proto);
|
||||
out_unregister_net_ops:
|
||||
unregister_pernet_gen_device(pppoe_net_id, &pppoe_net_ops);
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void __exit pppoe_exit(void)
|
||||
{
|
||||
unregister_pppox_proto(PX_PROTO_OE);
|
||||
dev_remove_pack(&pppoes_ptype);
|
||||
dev_remove_pack(&pppoed_ptype);
|
||||
unregister_netdevice_notifier(&pppoe_notifier);
|
||||
unregister_pernet_gen_device(pppoe_net_id, &pppoe_net_ops);
|
||||
dev_remove_pack(&pppoed_ptype);
|
||||
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);
|
||||
}
|
||||
|
||||
module_init(pppoe_init);
|
||||
|
|
Loading…
Reference in a new issue