scsi: hisi_sas: Call sas_unregister_ha() to roll back if .hw_init() fails
authorXiang Chen <chenxiang66@hisilicon.com>
Tue, 6 Apr 2021 11:48:28 +0000 (19:48 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 13 Apr 2021 03:21:26 +0000 (23:21 -0400)
Function sas_unregister_ha() needs to be called to roll back if
hisi_hba->hw->hw_init() fails in function hisi_sas_probe() or
hisi_sas_v3_probe(). Make that change.

Link: https://lore.kernel.org/r/1617709711-195853-4-git-send-email-john.garry@huawei.com
Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hisi_sas/hisi_sas_main.c
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c

index a979edf..971c45a 100644 (file)
@@ -2689,12 +2689,14 @@ int hisi_sas_probe(struct platform_device *pdev,
 
        rc = hisi_hba->hw->hw_init(hisi_hba);
        if (rc)
-               goto err_out_register_ha;
+               goto err_out_hw_init;
 
        scsi_scan_host(shost);
 
        return 0;
 
+err_out_hw_init:
+       sas_unregister_ha(sha);
 err_out_register_ha:
        scsi_remove_host(shost);
 err_out_ha:
index 51187dd..d7f8ba0 100644 (file)
@@ -4761,7 +4761,7 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
        rc = hisi_sas_v3_init(hisi_hba);
        if (rc)
-               goto err_out_register_ha;
+               goto err_out_hw_init;
 
        scsi_scan_host(shost);
 
@@ -4778,6 +4778,8 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
        return 0;
 
+err_out_hw_init:
+       sas_unregister_ha(sha);
 err_out_register_ha:
        scsi_remove_host(shost);
 err_out_free_irq_vectors: