diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-10-01 07:31:09 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-10-01 07:31:09 -0400 |
commit | de897881e474cae06cf06c830fcadc916c53ce64 (patch) | |
tree | 5138cedb1f9e7b97f9ac1bb321d28b4ce50f2cda /drivers/net/wireless/airo.c | |
parent | b7a00ecd557859c4037b6465fdd6c9a49b1fa649 (diff) |
drivers/net/wireless/{airo,ipw2100}: fix error handling bugs
airo:
* fix oops, if !CONFIG_PROC_FS (create_proc_entry always returns NULL)
* handle pci_register_driver() failure. if it fails, we really do
want to exit, rather than (as a comment indicates) return success
because-we-are-a-library.
* #if 0 have_isa_dev variable, which is assigned a value but never used
ipw2100:
* handle sysfs_create_group() failure
* handle driver_create_file() failure
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/wireless/airo.c')
-rw-r--r-- | drivers/net/wireless/airo.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index ba737c6cebe..39d09345027 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c @@ -5659,25 +5659,40 @@ static int airo_pci_resume(struct pci_dev *pdev) static int __init airo_init_module( void ) { - int i, have_isa_dev = 0; + int i; +#if 0 + int have_isa_dev = 0; +#endif airo_entry = create_proc_entry("aironet", S_IFDIR | airo_perm, proc_root_driver); - airo_entry->uid = proc_uid; - airo_entry->gid = proc_gid; + + if (airo_entry) { + airo_entry->uid = proc_uid; + airo_entry->gid = proc_gid; + } for( i = 0; i < 4 && io[i] && irq[i]; i++ ) { airo_print_info("", "Trying to configure ISA adapter at irq=%d " "io=0x%x", irq[i], io[i] ); if (init_airo_card( irq[i], io[i], 0, NULL )) +#if 0 have_isa_dev = 1; +#else + /* do nothing */ ; +#endif } #ifdef CONFIG_PCI airo_print_info("", "Probing for PCI adapters"); - pci_register_driver(&airo_driver); + i = pci_register_driver(&airo_driver); airo_print_info("", "Finished probing for PCI adapters"); + + if (i) { + remove_proc_entry("aironet", proc_root_driver); + return i; + } #endif /* Always exit with success, as we are a library module |