]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched/debug: Convert copy_from_user() + kstrtouint() to kstrtouint_from_user()
authorFushuai Wang <wangfushuai@baidu.com>
Sat, 17 Jan 2026 14:56:14 +0000 (22:56 +0800)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 22 Jan 2026 10:11:16 +0000 (11:11 +0100)
Using kstrtouint_from_user() instead of copy_from_user() + kstrtouint()
makes the code simpler and less error-prone.

Suggested-by: Yury Norov <ynorov@nvidia.com>
Signed-off-by: Fushuai Wang <wangfushuai@baidu.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Yury Norov <ynorov@nvidia.com>
Link: https://patch.msgid.link/20260117145615.53455-2-fushuai.wang@linux.dev
kernel/sched/debug.c

index 5f9b771951596f2eefd1df69f7a2f7f806b7137c..929fdf09e8e9deb606174df6050eaecca252940f 100644 (file)
@@ -172,18 +172,12 @@ static const struct file_operations sched_feat_fops = {
 static ssize_t sched_scaling_write(struct file *filp, const char __user *ubuf,
                                   size_t cnt, loff_t *ppos)
 {
-       char buf[16];
        unsigned int scaling;
+       int ret;
 
-       if (cnt > 15)
-               cnt = 15;
-
-       if (copy_from_user(&buf, ubuf, cnt))
-               return -EFAULT;
-       buf[cnt] = '\0';
-
-       if (kstrtouint(buf, 10, &scaling))
-               return -EINVAL;
+       ret = kstrtouint_from_user(ubuf, cnt, 10, &scaling);
+       if (ret)
+               return ret;
 
        if (scaling >= SCHED_TUNABLESCALING_END)
                return -EINVAL;