Commit fcb42edb authored by Xiang Chen's avatar Xiang Chen Committed by Zheng Zengkai
Browse files

scsi: hisi_sas: Call sas_unregister_ha() to roll back if .hw_init() fails

mainline inclusion
from mainline-master
commit f4676665
category: bugfix
bugzilla: 175270
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f467666504bf0c7eae95b929d0c86f77ff9b4356

------------------------------------------------------------------------

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: default avatarXiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: default avatarOuyangdelong <ouyangdelong@huawei.com>
Signed-off-by: default avatarNifujia <nifujia1@hisilicon.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent e6551d79
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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:
+3 −1
Original line number Diff line number Diff line
@@ -4762,7 +4762,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);

@@ -4779,6 +4779,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: