From: Andrew Morton - Don't call eisa_driver_unregister() if eisa_driver_register() failed. - Properly propagate error values. Signed-off-by: Andrew Morton --- drivers/net/3c509.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff -puN drivers/net/3c509.c~3c509-bus-registration-fix drivers/net/3c509.c --- devel/drivers/net/3c509.c~3c509-bus-registration-fix 2006-02-27 20:57:11.000000000 -0800 +++ devel-akpm/drivers/net/3c509.c 2006-02-27 20:57:11.000000000 -0800 @@ -1574,6 +1574,7 @@ MODULE_LICENSE("GPL"); static int __init el3_init_module(void) { + int ret = 0; el3_cards = 0; if (debug >= 0) @@ -1589,14 +1590,16 @@ static int __init el3_init_module(void) } #ifdef CONFIG_EISA - if (eisa_driver_register (&el3_eisa_driver) < 0) { - eisa_driver_unregister (&el3_eisa_driver); - } + ret = eisa_driver_register(&el3_eisa_driver); #endif #ifdef CONFIG_MCA - mca_register_driver(&el3_mca_driver); + { + int err = mca_register_driver(&el3_mca_driver); + if (ret == 0) + ret = err; + } #endif - return 0; + return ret; } static void __exit el3_cleanup_module(void) _