|
@@ -539,6 +539,11 @@ static void ocrdma_unregister_inet6addr_notifier(void)
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void ocrdma_unregister_inetaddr_notifier(void)
|
|
|
|
+{
|
|
|
|
+ unregister_inetaddr_notifier(&ocrdma_inetaddr_notifier);
|
|
|
|
+}
|
|
|
|
+
|
|
static int __init ocrdma_init_module(void)
|
|
static int __init ocrdma_init_module(void)
|
|
{
|
|
{
|
|
int status;
|
|
int status;
|
|
@@ -552,13 +557,19 @@ static int __init ocrdma_init_module(void)
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
status = register_inet6addr_notifier(&ocrdma_inet6addr_notifier);
|
|
status = register_inet6addr_notifier(&ocrdma_inet6addr_notifier);
|
|
if (status)
|
|
if (status)
|
|
- return status;
|
|
|
|
|
|
+ goto err_notifier6;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
status = be_roce_register_driver(&ocrdma_drv);
|
|
status = be_roce_register_driver(&ocrdma_drv);
|
|
if (status)
|
|
if (status)
|
|
- ocrdma_unregister_inet6addr_notifier();
|
|
|
|
|
|
+ goto err_be_reg;
|
|
|
|
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
|
|
+err_be_reg:
|
|
|
|
+ ocrdma_unregister_inet6addr_notifier();
|
|
|
|
+err_notifier6:
|
|
|
|
+ ocrdma_unregister_inetaddr_notifier();
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -566,6 +577,7 @@ static void __exit ocrdma_exit_module(void)
|
|
{
|
|
{
|
|
be_roce_unregister_driver(&ocrdma_drv);
|
|
be_roce_unregister_driver(&ocrdma_drv);
|
|
ocrdma_unregister_inet6addr_notifier();
|
|
ocrdma_unregister_inet6addr_notifier();
|
|
|
|
+ ocrdma_unregister_inetaddr_notifier();
|
|
ocrdma_rem_debugfs();
|
|
ocrdma_rem_debugfs();
|
|
}
|
|
}
|
|
|
|
|