Skip to content

Commit 10ca8c3

Browse files
niharcygregkh
authored andcommitted
staging: gpib: fmh: Handle gpib_register_driver() errors
The function gpib_register_driver() can fail, resulting in a semi-registered module and does not return an error value if it fails. Unregister the previous platform driver, pci and gpib registering functions if subsequent gpib_register_driver() fail and return the error value. Add pr_err() statements indicating the fail and also the error value. Signed-off-by: Nihar Chaithanya <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent cf95c0c commit 10ca8c3

File tree

1 file changed

+39
-8
lines changed

1 file changed

+39
-8
lines changed

drivers/staging/gpib/fmh_gpib/fmh_gpib.c

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1691,23 +1691,54 @@ static int __init fmh_gpib_init_module(void)
16911691

16921692
result = platform_driver_register(&fmh_gpib_platform_driver);
16931693
if (result) {
1694-
pr_err("fmh_gpib: platform_driver_register failed!\n");
1694+
pr_err("fmh_gpib: platform_driver_register failed: error = %d\n", result);
16951695
return result;
16961696
}
16971697

16981698
result = pci_register_driver(&fmh_gpib_pci_driver);
16991699
if (result) {
1700-
pr_err("fmh_gpib: pci_driver_register failed!\n");
1701-
return result;
1700+
pr_err("fmh_gpib: pci_register_driver failed: error = %d\n", result);
1701+
goto err_pci_driver;
1702+
}
1703+
1704+
result = gpib_register_driver(&fmh_gpib_unaccel_interface, THIS_MODULE);
1705+
if (result) {
1706+
pr_err("fmh_gpib: gpib_register_driver failed: error = %d\n", result);
1707+
goto err_unaccel;
1708+
}
1709+
1710+
result = gpib_register_driver(&fmh_gpib_interface, THIS_MODULE);
1711+
if (result) {
1712+
pr_err("fmh_gpib: gpib_register_driver failed: error = %d\n", result);
1713+
goto err_interface;
17021714
}
17031715

1704-
gpib_register_driver(&fmh_gpib_unaccel_interface, THIS_MODULE);
1705-
gpib_register_driver(&fmh_gpib_interface, THIS_MODULE);
1706-
gpib_register_driver(&fmh_gpib_pci_unaccel_interface, THIS_MODULE);
1707-
gpib_register_driver(&fmh_gpib_pci_interface, THIS_MODULE);
1716+
result = gpib_register_driver(&fmh_gpib_pci_unaccel_interface, THIS_MODULE);
1717+
if (result) {
1718+
pr_err("fmh_gpib: gpib_register_driver failed: error = %d\n", result);
1719+
goto err_pci_unaccel;
1720+
}
1721+
1722+
result = gpib_register_driver(&fmh_gpib_pci_interface, THIS_MODULE);
1723+
if (result) {
1724+
pr_err("fmh_gpib: gpib_register_driver failed: error = %d\n", result);
1725+
goto err_pci;
1726+
}
17081727

1709-
pr_info("fmh_gpib\n");
17101728
return 0;
1729+
1730+
err_pci:
1731+
gpib_unregister_driver(&fmh_gpib_pci_unaccel_interface);
1732+
err_pci_unaccel:
1733+
gpib_unregister_driver(&fmh_gpib_interface);
1734+
err_interface:
1735+
gpib_unregister_driver(&fmh_gpib_unaccel_interface);
1736+
err_unaccel:
1737+
pci_unregister_driver(&fmh_gpib_pci_driver);
1738+
err_pci_driver:
1739+
platform_driver_unregister(&fmh_gpib_platform_driver);
1740+
1741+
return result;
17111742
}
17121743

17131744
static void __exit fmh_gpib_exit_module(void)

0 commit comments

Comments
 (0)