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 In Next
Delegated to: Rafael Wysocki
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>
Rafael J. Wysocki Oct. 21, 2024, 11:24 a.m. UTC | #2
On Fri, Oct 18, 2024 at 10:23 AM Lukasz Luba <lukasz.luba@arm.com> wrote:
>
> 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>

Applied as 6.12-rc material, thanks!
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;
 	}