summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/airo.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-10-01 07:31:09 -0400
committerJeff Garzik <jeff@garzik.org>2006-10-01 07:31:09 -0400
commitde897881e474cae06cf06c830fcadc916c53ce64 (patch)
tree5138cedb1f9e7b97f9ac1bb321d28b4ce50f2cda /drivers/net/wireless/airo.c
parentb7a00ecd557859c4037b6465fdd6c9a49b1fa649 (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.c23
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