sysctl: returns -EINVAL when a negative value is passed to proc_doulongvec_minmax
authorBaokun Li <libaokun1@huawei.com>
Thu, 30 Dec 2021 09:29:46 +0000 (20:29 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 18 Jan 2022 01:50:15 +0000 (12:50 +1100)
commit2dc0d87f605f10641088c3db26dabb089933770a
tree54571a895d1d317cd3d0b535b8e31910e7ca5b38
parentb20bbe8c35f304e2b97ac28096594d19067daa93
sysctl: returns -EINVAL when a negative value is passed to proc_doulongvec_minmax

When we pass a negative value to the proc_doulongvec_minmax() function,
the function returns 0, but the corresponding interface value does not
change.

we can easily reproduce this problem with the following commands:
    cd /proc/sys/fs/epoll
    echo -1 > max_user_watches; echo $?; cat max_user_watches

This function requires a non-negative number to be passed in, so when
a negative number is passed in, -EINVAL is returned.

Link: https://lkml.kernel.org/r/20211220092627.3744624-1-libaokun1@huawei.com
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reported-by: Hulk Robot <hulkci@huawei.com>
Acked-by: Luis Chamberlain <mcgrof@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
kernel/sysctl.c