Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: defxx: Fix missing err handling in dfx_init()

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>

authored by

Yongqiang Liu and committed by
David S. Miller
ae18dcdf 44aa5a6d

+18 -4
+18 -4
drivers/net/fddi/defxx.c
··· 3831 3831 int status; 3832 3832 3833 3833 status = pci_register_driver(&dfx_pci_driver); 3834 - if (!status) 3835 - status = eisa_driver_register(&dfx_eisa_driver); 3836 - if (!status) 3837 - status = tc_register_driver(&dfx_tc_driver); 3834 + if (status) 3835 + goto err_pci_register; 3836 + 3837 + status = eisa_driver_register(&dfx_eisa_driver); 3838 + if (status) 3839 + goto err_eisa_register; 3840 + 3841 + status = tc_register_driver(&dfx_tc_driver); 3842 + if (status) 3843 + goto err_tc_register; 3844 + 3845 + return 0; 3846 + 3847 + err_tc_register: 3848 + eisa_driver_unregister(&dfx_eisa_driver); 3849 + err_eisa_register: 3850 + pci_unregister_driver(&dfx_pci_driver); 3851 + err_pci_register: 3838 3852 return status; 3839 3853 } 3840 3854