scsi: ufs: qcom: Properly clear hba priv on failure
authorBjorn Andersson <bjorn.andersson@linaro.org>
Sun, 20 Nov 2016 06:34:51 +0000 (22:34 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 22 Nov 2016 03:40:30 +0000 (22:40 -0500)
ufs_qcom_init() sets the hba priv data before attempting to acquire the
phy handle, so make sure to clear this in the case of an error. Failing
to do this will make ufs_qcom_setup_clocks() operate on the uninitalized
host object.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufs-qcom.c

index 804f4e70c771d65d49ac4fadd1b8d7403a81ddf4..aa43bfea0d004270d79411c91f5ee5b413daba73 100644 (file)
@@ -1197,12 +1197,12 @@ static int ufs_qcom_init(struct ufs_hba *hba)
        if (IS_ERR(host->generic_phy)) {
                err = PTR_ERR(host->generic_phy);
                dev_err(dev, "%s: PHY get failed %d\n", __func__, err);
-               goto out;
+               goto out_variant_clear;
        }
 
        err = ufs_qcom_bus_register(host);
        if (err)
-               goto out_host_free;
+               goto out_variant_clear;
 
        ufs_qcom_get_controller_revision(hba, &host->hw_ver.major,
                &host->hw_ver.minor, &host->hw_ver.step);
@@ -1267,7 +1267,7 @@ out_disable_phy:
        phy_power_off(host->generic_phy);
 out_unregister_bus:
        phy_exit(host->generic_phy);
-out_host_free:
+out_variant_clear:
        ufshcd_set_variant(hba, NULL);
 out:
        return err;