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>
This commit is contained in:
parent
b7a00ecd55
commit
de897881e4
2 changed files with 27 additions and 7 deletions
|
@ -5659,25 +5659,40 @@ static int airo_pci_resume(struct pci_dev *pdev)
|
||||||
|
|
||||||
static int __init airo_init_module( void )
|
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",
|
airo_entry = create_proc_entry("aironet",
|
||||||
S_IFDIR | airo_perm,
|
S_IFDIR | airo_perm,
|
||||||
proc_root_driver);
|
proc_root_driver);
|
||||||
|
|
||||||
|
if (airo_entry) {
|
||||||
airo_entry->uid = proc_uid;
|
airo_entry->uid = proc_uid;
|
||||||
airo_entry->gid = proc_gid;
|
airo_entry->gid = proc_gid;
|
||||||
|
}
|
||||||
|
|
||||||
for( i = 0; i < 4 && io[i] && irq[i]; i++ ) {
|
for( i = 0; i < 4 && io[i] && irq[i]; i++ ) {
|
||||||
airo_print_info("", "Trying to configure ISA adapter at irq=%d "
|
airo_print_info("", "Trying to configure ISA adapter at irq=%d "
|
||||||
"io=0x%x", irq[i], io[i] );
|
"io=0x%x", irq[i], io[i] );
|
||||||
if (init_airo_card( irq[i], io[i], 0, NULL ))
|
if (init_airo_card( irq[i], io[i], 0, NULL ))
|
||||||
|
#if 0
|
||||||
have_isa_dev = 1;
|
have_isa_dev = 1;
|
||||||
|
#else
|
||||||
|
/* do nothing */ ;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
#ifdef CONFIG_PCI
|
||||||
airo_print_info("", "Probing for PCI adapters");
|
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");
|
airo_print_info("", "Finished probing for PCI adapters");
|
||||||
|
|
||||||
|
if (i) {
|
||||||
|
remove_proc_entry("aironet", proc_root_driver);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Always exit with success, as we are a library module
|
/* Always exit with success, as we are a library module
|
||||||
|
|
|
@ -6267,7 +6267,9 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
|
||||||
IPW_DEBUG_INFO("%s: Bound to %s\n", dev->name, pci_name(pci_dev));
|
IPW_DEBUG_INFO("%s: Bound to %s\n", dev->name, pci_name(pci_dev));
|
||||||
|
|
||||||
/* perform this after register_netdev so that dev->name is set */
|
/* perform this after register_netdev so that dev->name is set */
|
||||||
sysfs_create_group(&pci_dev->dev.kobj, &ipw2100_attribute_group);
|
err = sysfs_create_group(&pci_dev->dev.kobj, &ipw2100_attribute_group);
|
||||||
|
if (err)
|
||||||
|
goto fail_unlock;
|
||||||
|
|
||||||
/* If the RF Kill switch is disabled, go ahead and complete the
|
/* If the RF Kill switch is disabled, go ahead and complete the
|
||||||
* startup sequence */
|
* startup sequence */
|
||||||
|
@ -6533,13 +6535,16 @@ static int __init ipw2100_init(void)
|
||||||
printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT);
|
printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT);
|
||||||
|
|
||||||
ret = pci_register_driver(&ipw2100_pci_driver);
|
ret = pci_register_driver(&ipw2100_pci_driver);
|
||||||
|
if (ret)
|
||||||
|
goto out;
|
||||||
|
|
||||||
#ifdef CONFIG_IPW2100_DEBUG
|
#ifdef CONFIG_IPW2100_DEBUG
|
||||||
ipw2100_debug_level = debug;
|
ipw2100_debug_level = debug;
|
||||||
driver_create_file(&ipw2100_pci_driver.driver,
|
ret = driver_create_file(&ipw2100_pci_driver.driver,
|
||||||
&driver_attr_debug_level);
|
&driver_attr_debug_level);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue