Re: [PATCH] cpufreq: Update sscanf() to kstrtouint()

From: David Laight
Date: Mon May 19 2025 - 17:49:40 EST


On Mon, 19 May 2025 15:09:38 +0800
Bowen Yu <yubowen8@xxxxxxxxxx> wrote:

> In store_scaling_setspeed(), sscanf is still used to read to sysfs.
> Newer kstrtox provide more features including overflow protection,
> better errorhandling and allows for other systems of numeration. It
> is therefore better to update sscanf() to kstrtouint().

This is a UAPI change.
Since the value is a frequency there could easily be scripts
that append Hz to the value.
You're making them fail.

David

>
> Signed-off-by: Bowen Yu <yubowen8@xxxxxxxxxx>
> ---
> drivers/cpufreq/cpufreq.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> index be727da0be4d..0c842edd1a76 100644
> --- a/drivers/cpufreq/cpufreq.c
> +++ b/drivers/cpufreq/cpufreq.c
> @@ -920,9 +920,9 @@ static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
> if (!policy->governor || !policy->governor->store_setspeed)
> return -EINVAL;
>
> - ret = sscanf(buf, "%u", &freq);
> - if (ret != 1)
> - return -EINVAL;
> + ret = kstrtouint(buf, 0, &freq);
> + if (ret)
> + return ret;
>
> policy->governor->store_setspeed(policy, freq);
>