public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] PM / devfreq: Some optimizations of devfreq
@ 2025-04-21  3:00 Lifeng Zheng
  2025-04-21  3:00 ` [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() Lifeng Zheng
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Lifeng Zheng @ 2025-04-21  3:00 UTC (permalink / raw)
  To: myungjoo.ham, kyungmin.park, cw00.choi
  Cc: linux-pm, linux-kernel, linuxarm, jonathan.cameron, zhanjie9,
	lihuisong, yubowen8, cenxinghai, zhenglifeng1


Lifeng Zheng (4):
  PM / devfreq: governor: Replace sscanf() with kstrtoul() in
    set_freq_store()
  PM / devfreq: Limit max_freq with scaling_min_freq
  PM / devfreq: Remove redundant devfreq_get_freq_range() calling in
    devfreq_add_device()
  PM / devfreq: Check governor before using governor->name

 drivers/devfreq/devfreq.c            | 20 +++++---------------
 drivers/devfreq/governor_userspace.c |  6 +++++-
 2 files changed, 10 insertions(+), 16 deletions(-)

-- 
2.33.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()
  2025-04-21  3:00 [PATCH 0/4] PM / devfreq: Some optimizations of devfreq Lifeng Zheng
@ 2025-04-21  3:00 ` Lifeng Zheng
  2025-04-27 11:17   ` David Laight
  2025-05-13 17:19   ` Chanwoo Choi
  2025-04-21  3:00 ` [PATCH 2/4] PM / devfreq: Limit max_freq with scaling_min_freq Lifeng Zheng
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 12+ messages in thread
From: Lifeng Zheng @ 2025-04-21  3:00 UTC (permalink / raw)
  To: myungjoo.ham, kyungmin.park, cw00.choi
  Cc: linux-pm, linux-kernel, linuxarm, jonathan.cameron, zhanjie9,
	lihuisong, yubowen8, cenxinghai, zhenglifeng1

Replace sscanf() with kstrtoul() in set_freq_store() and check the result
to avoid invalid input.

Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
---
 drivers/devfreq/governor_userspace.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
index d1aa6806b683..175de0c0b50e 100644
--- a/drivers/devfreq/governor_userspace.c
+++ b/drivers/devfreq/governor_userspace.c
@@ -9,6 +9,7 @@
 #include <linux/slab.h>
 #include <linux/device.h>
 #include <linux/devfreq.h>
+#include <linux/kstrtox.h>
 #include <linux/pm.h>
 #include <linux/mutex.h>
 #include <linux/module.h>
@@ -39,10 +40,13 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
 	unsigned long wanted;
 	int err = 0;
 
+	err = kstrtoul(buf, 0, &wanted);
+	if (err)
+		return err;
+
 	mutex_lock(&devfreq->lock);
 	data = devfreq->governor_data;
 
-	sscanf(buf, "%lu", &wanted);
 	data->user_frequency = wanted;
 	data->valid = true;
 	err = update_devfreq(devfreq);
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/4] PM / devfreq: Limit max_freq with scaling_min_freq
  2025-04-21  3:00 [PATCH 0/4] PM / devfreq: Some optimizations of devfreq Lifeng Zheng
  2025-04-21  3:00 ` [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() Lifeng Zheng
@ 2025-04-21  3:00 ` Lifeng Zheng
  2025-05-13 17:39   ` Chanwoo Choi
  2025-04-21  3:00 ` [PATCH 3/4] PM / devfreq: Remove redundant devfreq_get_freq_range() calling in devfreq_add_device() Lifeng Zheng
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Lifeng Zheng @ 2025-04-21  3:00 UTC (permalink / raw)
  To: myungjoo.ham, kyungmin.park, cw00.choi
  Cc: linux-pm, linux-kernel, linuxarm, jonathan.cameron, zhanjie9,
	lihuisong, yubowen8, cenxinghai, zhenglifeng1

Limit max_freq in devfreq_get_freq_range() with scaling_min_freq to avoid
showing an unreachable freq when reading it.

Use macro clamp to simplify code.

Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
---
 drivers/devfreq/devfreq.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 98657d3b9435..2810c84b9f8a 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -152,11 +152,8 @@ void devfreq_get_freq_range(struct devfreq *devfreq,
 				(unsigned long)HZ_PER_KHZ * qos_max_freq);
 
 	/* Apply constraints from OPP interface */
-	*min_freq = max(*min_freq, devfreq->scaling_min_freq);
-	*max_freq = min(*max_freq, devfreq->scaling_max_freq);
-
-	if (*min_freq > *max_freq)
-		*min_freq = *max_freq;
+	*max_freq = clamp(*max_freq, devfreq->scaling_min_freq, devfreq->scaling_max_freq);
+	*min_freq = clamp(*min_freq, devfreq->scaling_min_freq, *max_freq);
 }
 EXPORT_SYMBOL(devfreq_get_freq_range);
 
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/4] PM / devfreq: Remove redundant devfreq_get_freq_range() calling in devfreq_add_device()
  2025-04-21  3:00 [PATCH 0/4] PM / devfreq: Some optimizations of devfreq Lifeng Zheng
  2025-04-21  3:00 ` [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() Lifeng Zheng
  2025-04-21  3:00 ` [PATCH 2/4] PM / devfreq: Limit max_freq with scaling_min_freq Lifeng Zheng
@ 2025-04-21  3:00 ` Lifeng Zheng
  2025-05-13 17:41   ` Chanwoo Choi
  2025-04-21  3:00 ` [PATCH 4/4] PM / devfreq: Check governor before using governor->name Lifeng Zheng
  2025-05-13 12:52 ` [PATCH 0/4] PM / devfreq: Some optimizations of devfreq zhenglifeng (A)
  4 siblings, 1 reply; 12+ messages in thread
From: Lifeng Zheng @ 2025-04-21  3:00 UTC (permalink / raw)
  To: myungjoo.ham, kyungmin.park, cw00.choi
  Cc: linux-pm, linux-kernel, linuxarm, jonathan.cameron, zhanjie9,
	lihuisong, yubowen8, cenxinghai, zhenglifeng1

The calling of devfreq_get_freq_range() in devfreq_add_device() is
redundant because min_freq and max_freq are never used. Remove it.

Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
---
 drivers/devfreq/devfreq.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 2810c84b9f8a..18e3f7e063a4 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -804,7 +804,6 @@ struct devfreq *devfreq_add_device(struct device *dev,
 {
 	struct devfreq *devfreq;
 	struct devfreq_governor *governor;
-	unsigned long min_freq, max_freq;
 	int err = 0;
 
 	if (!dev || !profile || !governor_name) {
@@ -872,8 +871,6 @@ struct devfreq *devfreq_add_device(struct device *dev,
 		goto err_dev;
 	}
 
-	devfreq_get_freq_range(devfreq, &min_freq, &max_freq);
-
 	devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
 	devfreq->opp_table = dev_pm_opp_get_opp_table(dev);
 	if (IS_ERR(devfreq->opp_table))
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/4] PM / devfreq: Check governor before using governor->name
  2025-04-21  3:00 [PATCH 0/4] PM / devfreq: Some optimizations of devfreq Lifeng Zheng
                   ` (2 preceding siblings ...)
  2025-04-21  3:00 ` [PATCH 3/4] PM / devfreq: Remove redundant devfreq_get_freq_range() calling in devfreq_add_device() Lifeng Zheng
@ 2025-04-21  3:00 ` Lifeng Zheng
  2025-05-13 17:43   ` Chanwoo Choi
  2025-05-13 12:52 ` [PATCH 0/4] PM / devfreq: Some optimizations of devfreq zhenglifeng (A)
  4 siblings, 1 reply; 12+ messages in thread
From: Lifeng Zheng @ 2025-04-21  3:00 UTC (permalink / raw)
  To: myungjoo.ham, kyungmin.park, cw00.choi
  Cc: linux-pm, linux-kernel, linuxarm, jonathan.cameron, zhanjie9,
	lihuisong, yubowen8, cenxinghai, zhenglifeng1

Commit 96ffcdf239de ("PM / devfreq: Remove redundant governor_name from
struct devfreq") removes governor_name and uses governor->name to replace
it. But devfreq->governor may be NULL and directly using
devfreq->governor->name may cause null pointer exception. Move the check of
governor to before using governor->name.

Fixes: 96ffcdf239de ("PM / devfreq: Remove redundant governor_name from struct devfreq")
Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
---
 drivers/devfreq/devfreq.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 18e3f7e063a4..46f3a8053197 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -1376,15 +1376,11 @@ int devfreq_remove_governor(struct devfreq_governor *governor)
 		int ret;
 		struct device *dev = devfreq->dev.parent;
 
+		if (!devfreq->governor)
+			continue;
+
 		if (!strncmp(devfreq->governor->name, governor->name,
 			     DEVFREQ_NAME_LEN)) {
-			/* we should have a devfreq governor! */
-			if (!devfreq->governor) {
-				dev_warn(dev, "%s: Governor %s NOT present\n",
-					 __func__, governor->name);
-				continue;
-				/* Fall through */
-			}
 			ret = devfreq->governor->event_handler(devfreq,
 						DEVFREQ_GOV_STOP, NULL);
 			if (ret) {
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()
  2025-04-21  3:00 ` [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() Lifeng Zheng
@ 2025-04-27 11:17   ` David Laight
  2025-04-28  8:07     ` zhenglifeng (A)
  2025-05-13 17:19   ` Chanwoo Choi
  1 sibling, 1 reply; 12+ messages in thread
From: David Laight @ 2025-04-27 11:17 UTC (permalink / raw)
  To: Lifeng Zheng
  Cc: myungjoo.ham, kyungmin.park, cw00.choi, linux-pm, linux-kernel,
	linuxarm, jonathan.cameron, zhanjie9, lihuisong, yubowen8,
	cenxinghai

On Mon, 21 Apr 2025 11:00:17 +0800
Lifeng Zheng <zhenglifeng1@huawei.com> wrote:

> Replace sscanf() with kstrtoul() in set_freq_store() and check the result
> to avoid invalid input.

Isn't this a UAPI change?

The sscanf() version will ignore trailing characters.
In this case it is actually likely that value might have a trailing "Hz".

	David

> 
> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> ---
>  drivers/devfreq/governor_userspace.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
> index d1aa6806b683..175de0c0b50e 100644
> --- a/drivers/devfreq/governor_userspace.c
> +++ b/drivers/devfreq/governor_userspace.c
> @@ -9,6 +9,7 @@
>  #include <linux/slab.h>
>  #include <linux/device.h>
>  #include <linux/devfreq.h>
> +#include <linux/kstrtox.h>
>  #include <linux/pm.h>
>  #include <linux/mutex.h>
>  #include <linux/module.h>
> @@ -39,10 +40,13 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
>  	unsigned long wanted;
>  	int err = 0;
>  
> +	err = kstrtoul(buf, 0, &wanted);
> +	if (err)
> +		return err;
> +
>  	mutex_lock(&devfreq->lock);
>  	data = devfreq->governor_data;
>  
> -	sscanf(buf, "%lu", &wanted);
>  	data->user_frequency = wanted;
>  	data->valid = true;
>  	err = update_devfreq(devfreq);


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()
  2025-04-27 11:17   ` David Laight
@ 2025-04-28  8:07     ` zhenglifeng (A)
  0 siblings, 0 replies; 12+ messages in thread
From: zhenglifeng (A) @ 2025-04-28  8:07 UTC (permalink / raw)
  To: David Laight
  Cc: myungjoo.ham, kyungmin.park, cw00.choi, linux-pm, linux-kernel,
	linuxarm, jonathan.cameron, zhanjie9, lihuisong, yubowen8,
	cenxinghai

On 2025/4/27 19:17, David Laight wrote:
> On Mon, 21 Apr 2025 11:00:17 +0800
> Lifeng Zheng <zhenglifeng1@huawei.com> wrote:
> 
>> Replace sscanf() with kstrtoul() in set_freq_store() and check the result
>> to avoid invalid input.
> 
> Isn't this a UAPI change?
> 
> The sscanf() version will ignore trailing characters.
> In this case it is actually likely that value might have a trailing "Hz".

I tried to still use sscanf() at first, but checkpatch warned: "Prefer
kstrto<type> to single variable sscanf".

I'm not sure if we should ignore this warning.

> 
> 	David
> 
>>
>> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
>> ---
>>  drivers/devfreq/governor_userspace.c | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
>> index d1aa6806b683..175de0c0b50e 100644
>> --- a/drivers/devfreq/governor_userspace.c
>> +++ b/drivers/devfreq/governor_userspace.c
>> @@ -9,6 +9,7 @@
>>  #include <linux/slab.h>
>>  #include <linux/device.h>
>>  #include <linux/devfreq.h>
>> +#include <linux/kstrtox.h>
>>  #include <linux/pm.h>
>>  #include <linux/mutex.h>
>>  #include <linux/module.h>
>> @@ -39,10 +40,13 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
>>  	unsigned long wanted;
>>  	int err = 0;
>>  
>> +	err = kstrtoul(buf, 0, &wanted);
>> +	if (err)
>> +		return err;
>> +
>>  	mutex_lock(&devfreq->lock);
>>  	data = devfreq->governor_data;
>>  
>> -	sscanf(buf, "%lu", &wanted);
>>  	data->user_frequency = wanted;
>>  	data->valid = true;
>>  	err = update_devfreq(devfreq);
> 
> 


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/4] PM / devfreq: Some optimizations of devfreq
  2025-04-21  3:00 [PATCH 0/4] PM / devfreq: Some optimizations of devfreq Lifeng Zheng
                   ` (3 preceding siblings ...)
  2025-04-21  3:00 ` [PATCH 4/4] PM / devfreq: Check governor before using governor->name Lifeng Zheng
@ 2025-05-13 12:52 ` zhenglifeng (A)
  4 siblings, 0 replies; 12+ messages in thread
From: zhenglifeng (A) @ 2025-05-13 12:52 UTC (permalink / raw)
  To: myungjoo.ham, kyungmin.park, cw00.choi
  Cc: linux-pm, linux-kernel, linuxarm, jonathan.cameron, zhanjie9,
	lihuisong, yubowen8, cenxinghai

Gentle ping.

On 2025/4/21 11:00, Lifeng Zheng wrote:
> 
> Lifeng Zheng (4):
>   PM / devfreq: governor: Replace sscanf() with kstrtoul() in
>     set_freq_store()
>   PM / devfreq: Limit max_freq with scaling_min_freq
>   PM / devfreq: Remove redundant devfreq_get_freq_range() calling in
>     devfreq_add_device()
>   PM / devfreq: Check governor before using governor->name
> 
>  drivers/devfreq/devfreq.c            | 20 +++++---------------
>  drivers/devfreq/governor_userspace.c |  6 +++++-
>  2 files changed, 10 insertions(+), 16 deletions(-)
> 


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()
  2025-04-21  3:00 ` [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() Lifeng Zheng
  2025-04-27 11:17   ` David Laight
@ 2025-05-13 17:19   ` Chanwoo Choi
  1 sibling, 0 replies; 12+ messages in thread
From: Chanwoo Choi @ 2025-05-13 17:19 UTC (permalink / raw)
  To: Lifeng Zheng
  Cc: myungjoo.ham, kyungmin.park, cw00.choi, linux-pm, linux-kernel,
	linuxarm, jonathan.cameron, zhanjie9, lihuisong, yubowen8,
	cenxinghai

Hi,

Applied it. Thanks.

On Mon, Apr 21, 2025 at 12:00 PM Lifeng Zheng <zhenglifeng1@huawei.com> wrote:
>
> Replace sscanf() with kstrtoul() in set_freq_store() and check the result
> to avoid invalid input.
>
> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> ---
>  drivers/devfreq/governor_userspace.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
> index d1aa6806b683..175de0c0b50e 100644
> --- a/drivers/devfreq/governor_userspace.c
> +++ b/drivers/devfreq/governor_userspace.c
> @@ -9,6 +9,7 @@
>  #include <linux/slab.h>
>  #include <linux/device.h>
>  #include <linux/devfreq.h>
> +#include <linux/kstrtox.h>
>  #include <linux/pm.h>
>  #include <linux/mutex.h>
>  #include <linux/module.h>
> @@ -39,10 +40,13 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
>         unsigned long wanted;
>         int err = 0;
>
> +       err = kstrtoul(buf, 0, &wanted);
> +       if (err)
> +               return err;
> +
>         mutex_lock(&devfreq->lock);
>         data = devfreq->governor_data;
>
> -       sscanf(buf, "%lu", &wanted);
>         data->user_frequency = wanted;
>         data->valid = true;
>         err = update_devfreq(devfreq);
> --
> 2.33.0
>
>


-- 
Best Regards,
Chanwoo Choi
Samsung Electronics

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/4] PM / devfreq: Limit max_freq with scaling_min_freq
  2025-04-21  3:00 ` [PATCH 2/4] PM / devfreq: Limit max_freq with scaling_min_freq Lifeng Zheng
@ 2025-05-13 17:39   ` Chanwoo Choi
  0 siblings, 0 replies; 12+ messages in thread
From: Chanwoo Choi @ 2025-05-13 17:39 UTC (permalink / raw)
  To: Lifeng Zheng
  Cc: myungjoo.ham, kyungmin.park, cw00.choi, linux-pm, linux-kernel,
	linuxarm, jonathan.cameron, zhanjie9, lihuisong, yubowen8,
	cenxinghai

Hi,

Applied it. Thanks.

On Mon, Apr 21, 2025 at 12:00 PM Lifeng Zheng <zhenglifeng1@huawei.com> wrote:
>
> Limit max_freq in devfreq_get_freq_range() with scaling_min_freq to avoid
> showing an unreachable freq when reading it.
>
> Use macro clamp to simplify code.
>
> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> ---
>  drivers/devfreq/devfreq.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 98657d3b9435..2810c84b9f8a 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -152,11 +152,8 @@ void devfreq_get_freq_range(struct devfreq *devfreq,
>                                 (unsigned long)HZ_PER_KHZ * qos_max_freq);
>
>         /* Apply constraints from OPP interface */
> -       *min_freq = max(*min_freq, devfreq->scaling_min_freq);
> -       *max_freq = min(*max_freq, devfreq->scaling_max_freq);
> -
> -       if (*min_freq > *max_freq)
> -               *min_freq = *max_freq;
> +       *max_freq = clamp(*max_freq, devfreq->scaling_min_freq, devfreq->scaling_max_freq);
> +       *min_freq = clamp(*min_freq, devfreq->scaling_min_freq, *max_freq);
>  }
>  EXPORT_SYMBOL(devfreq_get_freq_range);
>
> --
> 2.33.0
>
>


-- 
Best Regards,
Chanwoo Choi
Samsung Electronics

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/4] PM / devfreq: Remove redundant devfreq_get_freq_range() calling in devfreq_add_device()
  2025-04-21  3:00 ` [PATCH 3/4] PM / devfreq: Remove redundant devfreq_get_freq_range() calling in devfreq_add_device() Lifeng Zheng
@ 2025-05-13 17:41   ` Chanwoo Choi
  0 siblings, 0 replies; 12+ messages in thread
From: Chanwoo Choi @ 2025-05-13 17:41 UTC (permalink / raw)
  To: Lifeng Zheng
  Cc: myungjoo.ham, kyungmin.park, cw00.choi, linux-pm, linux-kernel,
	linuxarm, jonathan.cameron, zhanjie9, lihuisong, yubowen8,
	cenxinghai

Hi,

Applied it. Thanks

On Mon, Apr 21, 2025 at 12:01 PM Lifeng Zheng <zhenglifeng1@huawei.com> wrote:
>
> The calling of devfreq_get_freq_range() in devfreq_add_device() is
> redundant because min_freq and max_freq are never used. Remove it.
>
> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> ---
>  drivers/devfreq/devfreq.c | 3 ---
>  1 file changed, 3 deletions(-)
>
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 2810c84b9f8a..18e3f7e063a4 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -804,7 +804,6 @@ struct devfreq *devfreq_add_device(struct device *dev,
>  {
>         struct devfreq *devfreq;
>         struct devfreq_governor *governor;
> -       unsigned long min_freq, max_freq;
>         int err = 0;
>
>         if (!dev || !profile || !governor_name) {
> @@ -872,8 +871,6 @@ struct devfreq *devfreq_add_device(struct device *dev,
>                 goto err_dev;
>         }
>
> -       devfreq_get_freq_range(devfreq, &min_freq, &max_freq);
> -
>         devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
>         devfreq->opp_table = dev_pm_opp_get_opp_table(dev);
>         if (IS_ERR(devfreq->opp_table))
> --
> 2.33.0
>
>


-- 
Best Regards,
Chanwoo Choi
Samsung Electronics

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/4] PM / devfreq: Check governor before using governor->name
  2025-04-21  3:00 ` [PATCH 4/4] PM / devfreq: Check governor before using governor->name Lifeng Zheng
@ 2025-05-13 17:43   ` Chanwoo Choi
  0 siblings, 0 replies; 12+ messages in thread
From: Chanwoo Choi @ 2025-05-13 17:43 UTC (permalink / raw)
  To: Lifeng Zheng
  Cc: myungjoo.ham, kyungmin.park, cw00.choi, linux-pm, linux-kernel,
	linuxarm, jonathan.cameron, zhanjie9, lihuisong, yubowen8,
	cenxinghai

Hi,

Applied it. Thanks.

On Mon, Apr 21, 2025 at 12:01 PM Lifeng Zheng <zhenglifeng1@huawei.com> wrote:
>
> Commit 96ffcdf239de ("PM / devfreq: Remove redundant governor_name from
> struct devfreq") removes governor_name and uses governor->name to replace
> it. But devfreq->governor may be NULL and directly using
> devfreq->governor->name may cause null pointer exception. Move the check of
> governor to before using governor->name.
>
> Fixes: 96ffcdf239de ("PM / devfreq: Remove redundant governor_name from struct devfreq")
> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
> ---
>  drivers/devfreq/devfreq.c | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 18e3f7e063a4..46f3a8053197 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -1376,15 +1376,11 @@ int devfreq_remove_governor(struct devfreq_governor *governor)
>                 int ret;
>                 struct device *dev = devfreq->dev.parent;
>
> +               if (!devfreq->governor)
> +                       continue;
> +
>                 if (!strncmp(devfreq->governor->name, governor->name,
>                              DEVFREQ_NAME_LEN)) {
> -                       /* we should have a devfreq governor! */
> -                       if (!devfreq->governor) {
> -                               dev_warn(dev, "%s: Governor %s NOT present\n",
> -                                        __func__, governor->name);
> -                               continue;
> -                               /* Fall through */
> -                       }
>                         ret = devfreq->governor->event_handler(devfreq,
>                                                 DEVFREQ_GOV_STOP, NULL);
>                         if (ret) {
> --
> 2.33.0
>
>


-- 
Best Regards,
Chanwoo Choi
Samsung Electronics

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-05-13 17:44 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-21  3:00 [PATCH 0/4] PM / devfreq: Some optimizations of devfreq Lifeng Zheng
2025-04-21  3:00 ` [PATCH 1/4] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() Lifeng Zheng
2025-04-27 11:17   ` David Laight
2025-04-28  8:07     ` zhenglifeng (A)
2025-05-13 17:19   ` Chanwoo Choi
2025-04-21  3:00 ` [PATCH 2/4] PM / devfreq: Limit max_freq with scaling_min_freq Lifeng Zheng
2025-05-13 17:39   ` Chanwoo Choi
2025-04-21  3:00 ` [PATCH 3/4] PM / devfreq: Remove redundant devfreq_get_freq_range() calling in devfreq_add_device() Lifeng Zheng
2025-05-13 17:41   ` Chanwoo Choi
2025-04-21  3:00 ` [PATCH 4/4] PM / devfreq: Check governor before using governor->name Lifeng Zheng
2025-05-13 17:43   ` Chanwoo Choi
2025-05-13 12:52 ` [PATCH 0/4] PM / devfreq: Some optimizations of devfreq zhenglifeng (A)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox