aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--drivers/net/wireless/airo.c23
-rw-r--r--drivers/net/wireless/ipw2100.c11
2 files changed, 27 insertions, 7 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index ba737c6cebec..39d09345027c 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)
5659 5659
5660static int __init airo_init_module( void ) 5660static int __init airo_init_module( void )
5661{ 5661{
5662 int i, have_isa_dev = 0; 5662 int i;
5663#if 0
5664 int have_isa_dev = 0;
5665#endif
5663 5666
5664 airo_entry = create_proc_entry("aironet", 5667 airo_entry = create_proc_entry("aironet",
5665 S_IFDIR | airo_perm, 5668 S_IFDIR | airo_perm,
5666 proc_root_driver); 5669 proc_root_driver);
5667 airo_entry->uid = proc_uid; 5670
5668 airo_entry->gid = proc_gid; 5671 if (airo_entry) {
5672 airo_entry->uid = proc_uid;
5673 airo_entry->gid = proc_gid;
5674 }
5669 5675
5670 for( i = 0; i < 4 && io[i] && irq[i]; i++ ) { 5676 for( i = 0; i < 4 && io[i] && irq[i]; i++ ) {
5671 airo_print_info("", "Trying to configure ISA adapter at irq=%d " 5677 airo_print_info("", "Trying to configure ISA adapter at irq=%d "
5672 "io=0x%x", irq[i], io[i] ); 5678 "io=0x%x", irq[i], io[i] );
5673 if (init_airo_card( irq[i], io[i], 0, NULL )) 5679 if (init_airo_card( irq[i], io[i], 0, NULL ))
5680#if 0
5674 have_isa_dev = 1; 5681 have_isa_dev = 1;
5682#else
5683 /* do nothing */ ;
5684#endif
5675 } 5685 }
5676 5686
5677#ifdef CONFIG_PCI 5687#ifdef CONFIG_PCI
5678 airo_print_info("", "Probing for PCI adapters"); 5688 airo_print_info("", "Probing for PCI adapters");
5679 pci_register_driver(&airo_driver); 5689 i = pci_register_driver(&airo_driver);
5680 airo_print_info("", "Finished probing for PCI adapters"); 5690 airo_print_info("", "Finished probing for PCI adapters");
5691
5692 if (i) {
5693 remove_proc_entry("aironet", proc_root_driver);
5694 return i;
5695 }
5681#endif 5696#endif
5682 5697
5683 /* Always exit with success, as we are a library module 5698 /* Always exit with success, as we are a library module
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c
index 6c5add701a6f..8ec9b73bbdd4 100644
--- a/drivers/net/wireless/ipw2100.c
+++ b/drivers/net/wireless/ipw2100.c
@@ -6267,7 +6267,9 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
6267 IPW_DEBUG_INFO("%s: Bound to %s\n", dev->name, pci_name(pci_dev)); 6267 IPW_DEBUG_INFO("%s: Bound to %s\n", dev->name, pci_name(pci_dev));
6268 6268
6269 /* perform this after register_netdev so that dev->name is set */ 6269 /* perform this after register_netdev so that dev->name is set */
6270 sysfs_create_group(&pci_dev->dev.kobj, &ipw2100_attribute_group); 6270 err = sysfs_create_group(&pci_dev->dev.kobj, &ipw2100_attribute_group);
6271 if (err)
6272 goto fail_unlock;
6271 6273
6272 /* If the RF Kill switch is disabled, go ahead and complete the 6274 /* If the RF Kill switch is disabled, go ahead and complete the
6273 * startup sequence */ 6275 * startup sequence */
@@ -6533,13 +6535,16 @@ static int __init ipw2100_init(void)
6533 printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT); 6535 printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT);
6534 6536
6535 ret = pci_register_driver(&ipw2100_pci_driver); 6537 ret = pci_register_driver(&ipw2100_pci_driver);
6538 if (ret)
6539 goto out;
6536 6540
6537#ifdef CONFIG_IPW2100_DEBUG 6541#ifdef CONFIG_IPW2100_DEBUG
6538 ipw2100_debug_level = debug; 6542 ipw2100_debug_level = debug;
6539 driver_create_file(&ipw2100_pci_driver.driver, 6543 ret = driver_create_file(&ipw2100_pci_driver.driver,
6540 &driver_attr_debug_level); 6544 &driver_attr_debug_level);
6541#endif 6545#endif
6542 6546
6547out:
6543 return ret; 6548 return ret;
6544} 6549}
6545 6550