ret = ath12k_mhi_get_msi(ab_pci);
        if (ret) {
                ath12k_err(ab, "failed to get msi for mhi\n");
-               mhi_free_controller(mhi_ctrl);
-               return ret;
+               goto free_controller;
        }
 
        mhi_ctrl->iova_start = 0;
        ret = mhi_register_controller(mhi_ctrl, ab->hw_params->mhi_config);
        if (ret) {
                ath12k_err(ab, "failed to register to mhi bus, err = %d\n", ret);
-               mhi_free_controller(mhi_ctrl);
-               return ret;
+               goto free_controller;
        }
 
        return 0;
+
+free_controller:
+       mhi_free_controller(mhi_ctrl);
+       ab_pci->mhi_ctrl = NULL;
+       return ret;
 }
 
 void ath12k_mhi_unregister(struct ath12k_pci *ab_pci)