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

Commit 489c06d4 authored by Bhaumik Bhatt's avatar Bhaumik Bhatt
Browse files

mhi: core: fix error handling in time synchronization function



Error handling in time synchronization function is not
appropriate as an error in disabling link level low power modes
could cause a spin lock to be unlocked without being locked.

Change-Id: I06177e587f4010b0558bf1331d3b80daf6948e53
Signed-off-by: default avatarBhaumik Bhatt <bbhatt@codeaurora.org>
parent 2f31fbf5
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -2562,13 +2562,13 @@ int mhi_get_remote_time_sync(struct mhi_device *mhi_dev,
	/* not all devices support time feature */
	if (!mhi_tsync) {
		ret = -EIO;
		goto err_unlock;
		goto error_unlock;
	}

	/* bring to M0 state */
	ret = __mhi_device_get_sync(mhi_cntrl);
	if (ret)
		goto err_unlock;
		goto error_unlock;

	read_lock_bh(&mhi_cntrl->pm_lock);
	if (unlikely(MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state))) {
@@ -2581,8 +2581,10 @@ int mhi_get_remote_time_sync(struct mhi_device *mhi_dev,

	/* disable link level low power modes */
	ret = mhi_cntrl->lpm_disable(mhi_cntrl, mhi_cntrl->priv_data);
	if (ret)
	if (ret) {
		read_lock_bh(&mhi_cntrl->pm_lock);
		goto error_invalid_state;
	}

	/*
	 * time critical code to fetch device times,
@@ -2604,7 +2606,7 @@ int mhi_get_remote_time_sync(struct mhi_device *mhi_dev,
error_invalid_state:
	mhi_cntrl->wake_put(mhi_cntrl, false);
	read_unlock_bh(&mhi_cntrl->pm_lock);
err_unlock:
error_unlock:
	mutex_unlock(&mhi_cntrl->tsync_mutex);
	return ret;
}