Received from Mark Salyzyn from Adaptec This patch adds some additional error return checking and error return value propagation during initialization. Also, the deprecation of pci_module_init with pci_register_driver along with the change in return values. Applies to the scsi-misc-2.6 git tree. Signed-off-by: Mark Haverkamp <markh@xxxxxxxx> Index: scsi-misc-aac-2/drivers/scsi/aacraid/linit.c =================================================================== --- scsi-misc-aac-2.orig/drivers/scsi/aacraid/linit.c 2005-09-08 11:32:27.000000000 -0700 +++ scsi-misc-aac-2/drivers/scsi/aacraid/linit.c 2005-09-08 11:32:30.000000000 -0700 @@ -748,7 +748,8 @@ unique_id++; } - if (pci_enable_device(pdev)) + error = pci_enable_device(pdev); + if (error) goto out; if (pci_set_dma_mask(pdev, 0xFFFFFFFFULL) || @@ -801,7 +802,9 @@ goto out_free_fibs; aac->maximum_num_channels = aac_drivers[index].channels; - aac_get_adapter_info(aac); + error = aac_get_adapter_info(aac); + if (error < 0) + goto out_deinit; /* * Lets override negotiations and drop the maximum SG limit to 34 @@ -929,9 +932,14 @@ printk(KERN_INFO "Adaptec %s driver (%s)\n", AAC_DRIVERNAME, aac_driver_version); - error = pci_module_init(&aac_pci_driver); - if (error) + error = pci_register_driver(&aac_pci_driver); + if (error < 0 || list_empty(&aac_devices)) { + if (error >= 0) { + pci_unregister_driver(&aac_pci_driver); + error = -ENODEV; + } return error; + } aac_cfg_major = register_chrdev( 0, "aac", &aac_cfg_fops); if (aac_cfg_major < 0) { -- Mark Haverkamp <markh@xxxxxxxx> - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html