]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: sysfs: validate scrub_speed_max value
authorDavid Disseldorp <ddiss@suse.de>
Fri, 8 Dec 2023 00:41:56 +0000 (11:41 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Feb 2024 07:54:23 +0000 (08:54 +0100)
commit 2b0122aaa800b021e36027d7f29e206f87c761d6 upstream.

The value set as scrub_speed_max accepts size with suffixes
(k/m/g/t/p/e) but we should still validate it for trailing characters,
similar to what we do with chunk_size_store.

CC: stable@vger.kernel.org # 5.15+
Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/sysfs.c

index 1c40e51513210e8538c428223314b86a161fa0ab..899dda6eb8353044cd6c59d27cd7c15fb7d5bc6e 100644 (file)
@@ -1523,6 +1523,10 @@ static ssize_t btrfs_devinfo_scrub_speed_max_store(struct kobject *kobj,
        unsigned long long limit;
 
        limit = memparse(buf, &endptr);
+       /* There could be trailing '\n', also catch any typos after the value. */
+       endptr = skip_spaces(endptr);
+       if (*endptr != 0)
+               return -EINVAL;
        WRITE_ONCE(device->scrub_speed_max, limit);
        return len;
 }