Message ID | 20241018021205.46460-1-yuancan@huawei.com |
---|---|
State | Accepted |
Commit | 5209d1b654f1db80509040cc694c7814a1b547e3 |
Headers | show |
Series | powercap/dtpm_devfreq: Fix error check against dev_pm_qos_add_request() | expand |
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 --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; }
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(-)