forked from luck/tmp_suning_uos_patched
[SCSI] lpfc 8.1.5 : Fix cleanup code in the lpfc_pci_probe_one() error code path
Fix cleanup code in the lpfc_pci_probe_one() error code path. This changes the original patch by: - hardsetting the return value from lpfc_pci_probe_one() to -ENODEV (negative value) if we fail attach - removes the checks from lpfc_pci_remove_one() validating the host and phba pointers as it's no longer needed. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
82d9a2a290
commit
defbcf11ab
@ -1618,7 +1618,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
|
||||
|
||||
error = lpfc_alloc_sysfs_attr(phba);
|
||||
if (error)
|
||||
goto out_kthread_stop;
|
||||
goto out_remove_host;
|
||||
|
||||
error = request_irq(phba->pcidev->irq, lpfc_intr_handler, SA_SHIRQ,
|
||||
LPFC_DRIVER_NAME, phba);
|
||||
@ -1635,8 +1635,10 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
|
||||
phba->HCregaddr = phba->ctrl_regs_memmap_p + HC_REG_OFFSET;
|
||||
|
||||
error = lpfc_sli_hba_setup(phba);
|
||||
if (error)
|
||||
if (error) {
|
||||
error = -ENODEV;
|
||||
goto out_free_irq;
|
||||
}
|
||||
|
||||
if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
|
||||
spin_lock_irq(phba->host->host_lock);
|
||||
@ -1691,6 +1693,9 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
|
||||
free_irq(phba->pcidev->irq, phba);
|
||||
out_free_sysfs_attr:
|
||||
lpfc_free_sysfs_attr(phba);
|
||||
out_remove_host:
|
||||
fc_remove_host(phba->host);
|
||||
scsi_remove_host(phba->host);
|
||||
out_kthread_stop:
|
||||
kthread_stop(phba->worker_thread);
|
||||
out_free_iocbq:
|
||||
@ -1712,12 +1717,14 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
|
||||
out_idr_remove:
|
||||
idr_remove(&lpfc_hba_index, phba->brd_no);
|
||||
out_put_host:
|
||||
phba->host = NULL;
|
||||
scsi_host_put(host);
|
||||
out_release_regions:
|
||||
pci_release_regions(pdev);
|
||||
out_disable_device:
|
||||
pci_disable_device(pdev);
|
||||
out:
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user