Re: [PATCH] kernel/sysctl: return -EINVAL if write invalid val to ulong type sysctl

From: Andrew Morton
Date: Wed Nov 30 2016 - 16:33:47 EST

On Wed, 30 Nov 2016 18:30:52 +0800 Yisheng Xie <xieyisheng1@xxxxxxxxxx> wrote:

> I tried to echo an invalid value to an unsigned long type sysctl on
> 4.9.0-rc6:
> linux:~# cat /proc/sys/vm/user_reserve_kbytes
> 131072
> linux:~# echo -1 > /proc/sys/vm/user_reserve_kbytes
> linux:~# cat /proc/sys/vm/user_reserve_kbytes
> 131072
> The echo operation got error and the value do not write to
> user_reserve_kbytes, however, user do not know it until checking
> the value again.
> This patch return -EINVAL when write an invalid value to unsigned
> long type sysctl to make user know what happened without
> checking its value once more, just as what proc_douintvec do.


# echo 18446744073709551615 > /proc/sys/vm/user_reserve_kbytes
# cat /proc/sys/vm/user_reserve_kbytes

I think that when taking in an unsigned long the kernel should simply
treat -1 as 0xffffffff (or 0xffffffffffffffff). It's natural and
normal and everyone knows what it means?