Commit 0fe1329b authored by Dan Carpenter's avatar Dan Carpenter Committed by Rafael J. Wysocki
Browse files

powercap/drivers/dtpm: Fix some missing unlock bugs



We need to unlock on these paths before returning.

Fixes: a20d0ef9 ("powercap/drivers/dtpm: Add API for dynamic thermal power management")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Acked-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 2185c230
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -147,13 +147,17 @@ static void __dtpm_add_power(struct dtpm *dtpm)
 */
int dtpm_update_power(struct dtpm *dtpm, u64 power_min, u64 power_max)
{
	int ret = 0;

	mutex_lock(&dtpm_lock);

	if (power_min == dtpm->power_min && power_max == dtpm->power_max)
		return 0;
		goto unlock;

	if (power_max < power_min)
		return -EINVAL;
	if (power_max < power_min) {
		ret = -EINVAL;
		goto unlock;
	}

	__dtpm_sub_power(dtpm);

@@ -164,9 +168,10 @@ int dtpm_update_power(struct dtpm *dtpm, u64 power_min, u64 power_max)

	__dtpm_add_power(dtpm);

unlock:
	mutex_unlock(&dtpm_lock);

	return 0;
	return ret;
}

/**
@@ -187,8 +192,10 @@ int dtpm_release_zone(struct powercap_zone *pcz)

	mutex_lock(&dtpm_lock);

	if (!list_empty(&dtpm->children))
	if (!list_empty(&dtpm->children)) {
		mutex_unlock(&dtpm_lock);
		return -EBUSY;
	}

	if (parent)
		list_del(&dtpm->sibling);