mirror of https://gitee.com/openkylin/linux.git
proc_dointvec: write a single value
The commit 00b7c3395a
"sysctl: refactor integer handling proc code"
modified the behaviour of writing to /proc.
Before the commit, write("1\n") to /proc/sys/kernel/printk succeeded. But
now it returns EINVAL.
This commit supports writing a single value to a multi-valued entry.
Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>
Reviewed-and-tested-by: WANG Cong <amwang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
dd7496f217
commit
563b046710
|
@ -2253,6 +2253,8 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table,
|
|||
if (write) {
|
||||
left -= proc_skip_spaces(&kbuf);
|
||||
|
||||
if (!left)
|
||||
break;
|
||||
err = proc_get_long(&kbuf, &left, &lval, &neg,
|
||||
proc_wspace_sep,
|
||||
sizeof(proc_wspace_sep), NULL);
|
||||
|
@ -2279,7 +2281,7 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table,
|
|||
|
||||
if (!write && !first && left && !err)
|
||||
err = proc_put_char(&buffer, &left, '\n');
|
||||
if (write && !err)
|
||||
if (write && !err && left)
|
||||
left -= proc_skip_spaces(&kbuf);
|
||||
free:
|
||||
if (write) {
|
||||
|
|
Loading…
Reference in New Issue