diff mbox series

powercap/dtpm_devfreq: Fix error check against dev_pm_qos_add_request()

Message ID 20241018021205.46460-1-yuancan@huawei.com (mailing list archive)
State New
Headers show
Series powercap/dtpm_devfreq: Fix error check against dev_pm_qos_add_request() | expand

Commit Message

Yuan Can Oct. 18, 2024, 2:12 a.m. UTC
The caller of the function dev_pm_qos_add_request() checks again a non
zero value but dev_pm_qos_add_request() can return '1' if the request
already exists. Therefore, the setup function fails while the QoS
request actually did not failed.

Fix that by changing the check against a negative value like all the
other callers of the function.

Fixes: e44655617317 ("powercap/drivers/dtpm: Add dtpm devfreq with energy model support")
Signed-off-by: Yuan Can <yuancan@huawei.com>
---
 drivers/powercap/dtpm_devfreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Lukasz Luba Oct. 18, 2024, 8:24 a.m. UTC | #1
Hi Yuan,

On 10/18/24 03:12, Yuan Can wrote:
> The caller of the function dev_pm_qos_add_request() checks again a non
> zero value but dev_pm_qos_add_request() can return '1' if the request
> already exists. Therefore, the setup function fails while the QoS
> request actually did not failed.
> 
> Fix that by changing the check against a negative value like all the
> other callers of the function.
> 
> Fixes: e44655617317 ("powercap/drivers/dtpm: Add dtpm devfreq with energy model support")
> Signed-off-by: Yuan Can <yuancan@huawei.com>
> ---
>   drivers/powercap/dtpm_devfreq.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/powercap/dtpm_devfreq.c b/drivers/powercap/dtpm_devfreq.c
> index f40bce8176df..d1dff6ccab12 100644
> --- a/drivers/powercap/dtpm_devfreq.c
> +++ b/drivers/powercap/dtpm_devfreq.c
> @@ -178,7 +178,7 @@ static int __dtpm_devfreq_setup(struct devfreq *devfreq, struct dtpm *parent)
>   	ret = dev_pm_qos_add_request(dev, &dtpm_devfreq->qos_req,
>   				     DEV_PM_QOS_MAX_FREQUENCY,
>   				     PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE);
> -	if (ret) {
> +	if (ret < 0) {
>   		pr_err("Failed to add QoS request: %d\n", ret);
>   		goto out_dtpm_unregister;
>   	}

Good catch thanks!
Indeed in the doc of that API there is '1' as return value.
I will check other places of that QoS usage.


Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
diff mbox series

Patch

diff --git a/drivers/powercap/dtpm_devfreq.c b/drivers/powercap/dtpm_devfreq.c
index f40bce8176df..d1dff6ccab12 100644
--- a/drivers/powercap/dtpm_devfreq.c
+++ b/drivers/powercap/dtpm_devfreq.c
@@ -178,7 +178,7 @@  static int __dtpm_devfreq_setup(struct devfreq *devfreq, struct dtpm *parent)
 	ret = dev_pm_qos_add_request(dev, &dtpm_devfreq->qos_req,
 				     DEV_PM_QOS_MAX_FREQUENCY,
 				     PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE);
-	if (ret) {
+	if (ret < 0) {
 		pr_err("Failed to add QoS request: %d\n", ret);
 		goto out_dtpm_unregister;
 	}