diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index df1bc2fa6979863c61069fad225815606ea4c69a..7da60b741c3e6cb5a6cf3bf2e6386e885dccb378 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -6526,15 +6526,16 @@ static int __init bonding_init(void) if (res) goto out; + bond_create_debugfs(); + res = register_pernet_subsys(&bond_net_ops); if (res) - goto out; + goto err_net_ops; res = bond_netlink_init(); if (res) goto err_link; - bond_create_debugfs(); bond_create_sysctl(); for (i = 0; i < max_bonds; i++) { @@ -6551,11 +6552,12 @@ static int __init bonding_init(void) out: return res; err: - bond_destroy_debugfs(); bond_destroy_sysctl(); bond_netlink_fini(); err_link: unregister_pernet_subsys(&bond_net_ops); +err_net_ops: + bond_destroy_debugfs(); goto out; } @@ -6564,12 +6566,13 @@ static void __exit bonding_exit(void) { unregister_netdevice_notifier(&bond_netdev_notifier); - bond_destroy_debugfs(); bond_destroy_sysctl(); bond_netlink_fini(); unregister_pernet_subsys(&bond_net_ops); + bond_destroy_debugfs(); + #ifdef CONFIG_NET_POLL_CONTROLLER /* Make sure we don't have an imbalance on our netpoll blocking */ WARN_ON(atomic_read(&netpoll_block_tx));