Skip to content

Commit cf95c0c

Browse files
niharcygregkh
authored andcommitted
staging: gpib: fluke: 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 and gpib registering functions if subsequent gpib_register_driver() fail and return the error value. Add pr_err() statements indicating the fail and 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 f07296b commit cf95c0c

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

drivers/staging/gpib/eastwood/fluke_gpib.c

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,16 +1155,38 @@ static int __init fluke_init_module(void)
11551155

11561156
result = platform_driver_register(&fluke_gpib_platform_driver);
11571157
if (result) {
1158-
pr_err("fluke_gpib: platform_driver_register failed!\n");
1158+
pr_err("fluke_gpib: platform_driver_register failed: error = %d\n", result);
11591159
return result;
11601160
}
11611161

1162-
gpib_register_driver(&fluke_unaccel_interface, THIS_MODULE);
1163-
gpib_register_driver(&fluke_hybrid_interface, THIS_MODULE);
1164-
gpib_register_driver(&fluke_interface, THIS_MODULE);
1162+
result = gpib_register_driver(&fluke_unaccel_interface, THIS_MODULE);
1163+
if (result) {
1164+
pr_err("fluke_gpib: gpib_register_driver failed: error = %d\n", result);
1165+
goto err_unaccel;
1166+
}
1167+
1168+
result = gpib_register_driver(&fluke_hybrid_interface, THIS_MODULE);
1169+
if (result) {
1170+
pr_err("fluke_gpib: gpib_register_driver failed: error = %d\n", result);
1171+
goto err_hybrid;
1172+
}
1173+
1174+
result = gpib_register_driver(&fluke_interface, THIS_MODULE);
1175+
if (result) {
1176+
pr_err("fluke_gpib: gpib_register_driver failed: error = %d\n", result);
1177+
goto err_interface;
1178+
}
11651179

1166-
pr_info("fluke_gpib\n");
11671180
return 0;
1181+
1182+
err_interface:
1183+
gpib_unregister_driver(&fluke_hybrid_interface);
1184+
err_hybrid:
1185+
gpib_unregister_driver(&fluke_unaccel_interface);
1186+
err_unaccel:
1187+
platform_driver_unregister(&fluke_gpib_platform_driver);
1188+
1189+
return result;
11681190
}
11691191

11701192
static void __exit fluke_exit_module(void)

0 commit comments

Comments
 (0)