Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit defbcf11 authored by James Smart's avatar James Smart Committed by James Bottomley
Browse files

[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: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 82d9a2a2
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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;
}