net: defxx: Fix missing err handling in dfx_init()
authorYongqiang Liu <liuyongqiang13@huawei.com>
Wed, 7 Dec 2022 07:20:45 +0000 (07:20 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Dec 2022 10:44:27 +0000 (10:44 +0000)
When eisa_driver_register() or tc_register_driver() failed,
the modprobe defxx would fail with some err log as follows:

 Error: Driver 'defxx' is already registered, aborting...

Fix this issue by adding err hanling in dfx_init().

Fixes: e89a2cfb7d7b5 ("[TC] defxx: TURBOchannel support")
Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/fddi/defxx.c

index b584ffe..1fef8a9 100644 (file)
@@ -3831,10 +3831,24 @@ static int dfx_init(void)
        int status;
 
        status = pci_register_driver(&dfx_pci_driver);
-       if (!status)
-               status = eisa_driver_register(&dfx_eisa_driver);
-       if (!status)
-               status = tc_register_driver(&dfx_tc_driver);
+       if (status)
+               goto err_pci_register;
+
+       status = eisa_driver_register(&dfx_eisa_driver);
+       if (status)
+               goto err_eisa_register;
+
+       status = tc_register_driver(&dfx_tc_driver);
+       if (status)
+               goto err_tc_register;
+
+       return 0;
+
+err_tc_register:
+       eisa_driver_unregister(&dfx_eisa_driver);
+err_eisa_register:
+       pci_unregister_driver(&dfx_pci_driver);
+err_pci_register:
        return status;
 }