powercap/drivers/dtpm: Fix some missing unlock bugs
PATCH 2/3 powercap/drivers/dtpm: Fix some missing unlock bugs
We need to unlock on these paths before returning.
Fixes a20d0ef97abf ("powercap/drivers/dtpm: Add API for dynamic thermal power management")
Signed-off-by Dan Carpenter <[email protected]>
--- drivers/powercap/dtpm.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)
drivers/powercap/dtpm.c +12 -5
@@ -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);
Signature · 1 line
2.29.2
Quoted 4 lines · Dan Carpenter
We need to unlock on these paths before returning.
Fixes a20d0ef97abf ("powercap/drivers/dtpm: Add API for dynamic thermal power management")Signed-off-by Dan Carpenter <[email protected]>
Acked-by Daniel Lezcano <[email protected]>
Quoted 54 lines
--- drivers/powercap/dtpm.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)drivers/powercap/dtpm.c +12
-5@@ -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);
Signature · 5 lines
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog