diff options
Diffstat (limited to 'drivers/net/depca.c')
-rw-r--r-- | drivers/net/depca.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/drivers/net/depca.c b/drivers/net/depca.c index bf66e9b3b19e..91b3846ffc8a 100644 --- a/drivers/net/depca.c +++ b/drivers/net/depca.c @@ -1487,7 +1487,7 @@ static void __init depca_platform_probe (void) if (!pldev->dev.driver) { /* The driver was not bound to this device, there was * no hardware at this address. Unregister it, as the - * release fuction will take care of freeing the + * release function will take care of freeing the * allocated structure */ depca_io_ports[i].device = NULL; @@ -2061,18 +2061,35 @@ static int depca_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) static int __init depca_module_init (void) { - int err = 0; + int err = 0; #ifdef CONFIG_MCA - err = mca_register_driver (&depca_mca_driver); + err = mca_register_driver(&depca_mca_driver); + if (err) + goto err; #endif #ifdef CONFIG_EISA - err |= eisa_driver_register (&depca_eisa_driver); + err = eisa_driver_register(&depca_eisa_driver); + if (err) + goto err_mca; #endif - err |= platform_driver_register (&depca_isa_driver); - depca_platform_probe (); + err = platform_driver_register(&depca_isa_driver); + if (err) + goto err_eisa; - return err; + depca_platform_probe(); + return 0; + +err_eisa: +#ifdef CONFIG_EISA + eisa_driver_unregister(&depca_eisa_driver); +err_mca: +#endif +#ifdef CONFIG_MCA + mca_unregister_driver(&depca_mca_driver); +err: +#endif + return err; } static void __exit depca_module_exit (void) |