cpufreq: warn about invalid vals to scaling_max/min_freq interfaces
authorqinyu <qinyu32@huawei.com>
Mon, 20 Mar 2023 08:17:02 +0000 (16:17 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 22 Mar 2023 19:10:59 +0000 (20:10 +0100)
When echo an invalid val to scaling_min_freq:
> echo 123abc123 > scaling_min_freq
It looks weird to have a return val of 0:
> echo $?
> 0

Sane people won't echo strings like that into these interfaces but fuzz
tests may do. Also, maybe it's better to inform people if input is
invalid.

After this:
> echo 123abc123 > scaling_min_freq
> -bash: echo: write error: Invalid argument

Signed-off-by: qinyu <qinyu32@huawei.com>
Tested-by: zhangxiaofeng <zhangxiaofeng46@huawei.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/cpufreq.c

index 6d8fd3b8dcb526d8dbab3fed2bd5bc218cc95a1b..d61f7308f63ccc6f4893ced37bc6a138b32dfa50 100644 (file)
@@ -725,9 +725,9 @@ static ssize_t store_##file_name                                    \
        unsigned long val;                                              \
        int ret;                                                        \
                                                                        \
-       ret = sscanf(buf, "%lu", &val);                                 \
-       if (ret != 1)                                                   \
-               return -EINVAL;                                         \
+       ret = kstrtoul(buf, 0, &val);                                   \
+       if (ret)                                                        \
+               return ret;                                             \
                                                                        \
        ret = freq_qos_update_request(policy->object##_freq_req, val);\
        return ret >= 0 ? count : ret;                                  \