Yisheng Xie <xieyishe...@huawei.com> writes: > On 2016/12/1 5:33, Andrew Morton wrote: >> On Wed, 30 Nov 2016 18:30:52 +0800 Yisheng Xie <xieyishe...@huawei.com> >> 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. >> >> hmpf. >> >> # echo 18446744073709551615 > /proc/sys/vm/user_reserve_kbytes >> >> # cat /proc/sys/vm/user_reserve_kbytes >> 18446744073709551615 >> >> 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? >> > Hi Andrew, > Thank you for your reply. > Do you means it should be like this: > # echo -1 > /proc/sys/vm/user_reserve_kbytes > # cat /proc/sys/vm/user_reserve_kbytes > 18446744073709551615 > > I looks ok to me, however, I not sure whether other code in the kernel > will also use its complement if user write a negative number for an > unsigned long. Does anyone have other opinion ?
Largely we need to be very careful with changing these functions as they have been around for a long time, and have a very diverse set of users. So while changes are possible a reasonable argument needs to be made that nothing in userspace cares. Eric