On Friday 26 December 2014 12:41:22 Markus Pargmann wrote:
>  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;
>  }

To be truely clean, I guess the workqueue should be destroyed as well ?

Cheers,
Marek

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to