[05/31] batman-adv: init, Add some error handling
Commit Message
This patch adds some error handling for the main init function. It
checks the return values of all the function calls that provide return
values.
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
---
main.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
@@ -59,29 +59,47 @@ static void batadv_recv_handler_init(void);
static int __init batadv_init(void)
{
+ int ret;
+
INIT_LIST_HEAD(&batadv_hardif_list);
INIT_HLIST_HEAD(&batadv_algo_list);
batadv_recv_handler_init();
- batadv_iv_init();
- batadv_nc_init();
+ ret = batadv_iv_init();
+ if (ret)
+ return ret;
+
+ ret = batadv_nc_init();
+ if (ret)
+ return ret;
batadv_event_workqueue = create_singlethread_workqueue("bat_events");
-
if (!batadv_event_workqueue)
return -ENOMEM;
batadv_socket_init();
batadv_debugfs_init();
- register_netdevice_notifier(&batadv_hard_if_notifier);
- rtnl_link_register(&batadv_link_ops);
+ ret = register_netdevice_notifier(&batadv_hard_if_notifier);
+ if (ret)
+ goto err_netdev_notifier;
+
+ ret = rtnl_link_register(&batadv_link_ops);
+ if (ret)
+ goto err_link_register;
pr_info("B.A.T.M.A.N. advanced %s (compatibility version %i) loaded\n",
BATADV_SOURCE_VERSION, BATADV_COMPAT_VERSION);
return 0;
+
+err_link_register:
+ unregister_netdevice_notifier(&batadv_hard_if_notifier);
+err_netdev_notifier:
+ batadv_debugfs_destroy();
+
+ return ret;
}
static void __exit batadv_exit(void)