On Thu, Dec 06, 2018 at 03:36:15PM +0800, Cheng Lin wrote: > If the number of input parameters is less than the total > parameters, an EINVAL error will be returned. > > e.g. > We use proc_doulongvec_minmax to pass up to two parameters > with kern_table. > > { > .procname = "monitor_signals", > .data = &monitor_sigs, > .maxlen = 2*sizeof(unsigned long), > .mode = 0644, > .proc_handler = proc_doulongvec_minmax, > }, > > Reproduce: > When passing two parameters, it's work normal. But passing > only one parameter, an error "Invalid argument"(EINVAL) is > returned. > > [root@cl150 ~]# echo 1 2 > /proc/sys/kernel/monitor_signals > [root@cl150 ~]# cat /proc/sys/kernel/monitor_signals > 1 2 > [root@cl150 ~]# echo 3 > /proc/sys/kernel/monitor_signals > -bash: echo: write error: Invalid argument > [root@cl150 ~]# echo $? > 1 > [root@cl150 ~]# cat /proc/sys/kernel/monitor_signals > 3 2 > [root@cl150 ~]# > > The following is the result after apply this patch. No error > is returned when the number of input parameters is less than > the total parameters. > > [root@cl150 ~]# echo 1 2 > /proc/sys/kernel/monitor_signals > [root@cl150 ~]# cat /proc/sys/kernel/monitor_signals > 1 2 > [root@cl150 ~]# echo 3 > /proc/sys/kernel/monitor_signals > [root@cl150 ~]# echo $? > 0 > [root@cl150 ~]# cat /proc/sys/kernel/monitor_signals > 3 2 > [root@cl150 ~]# > > There are three processing functions dealing with digital parameters, > __do_proc_dointvec/__do_proc_douintvec/__do_proc_doulongvec_minmax. > > This patch deals with __do_proc_doulongvec_minmax, just as > __do_proc_dointvec does, adding a check for parameters 'left'. In > __do_proc_douintvec, its code implementation explicitly does not > support multiple inputs. > > static int __do_proc_douintvec(...){ > ... > /* > * Arrays are not supported, keep this simple. *Do not* add > * support for them. > */ > if (vleft != 1) { > *lenp = 0; > return -EINVAL; > } > ... > } > > So, just __do_proc_doulongvec_minmax has the problem. And most use of > proc_doulongvec_minmax/proc_doulongvec_ms_jiffies_minmax just have one > parameter. > > Signed-off-by: Cheng Lin <cheng.lin130@xxxxxxxxxx> Thanks for fixing up the commit log. Acked-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> I think we can live with this outside of stable. So stable is not needed. But I would not be surprised if autosel algorithm will end up picking it up. And if so.. well, it cannot hurt. Luis