]> git.proxmox.com Git - mirror_zfs.git/commit
linux/spl: base proc_dohostid() on proc_dostring()
authorнаб <nabijaczleweli@nabijaczleweli.xyz>
Sat, 10 Apr 2021 23:18:40 +0000 (01:18 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 15 Apr 2021 21:55:43 +0000 (14:55 -0700)
commit7de4c88b39473f358add601e8c227ca9002b1bee
tree7ce8a26c98a4404935064d9a6dae1f449f1f4fc7
parent2d14207c98b485385a97aa6669c2723eed53bcbb
linux/spl: base proc_dohostid() on proc_dostring()

This fixes /proc/sys/kernel/spl/hostid on kernels with mainline commit
32927393dc1ccd60fb2bdc05b9e8e88753761469 ("sysctl: pass kernel pointers
to ->proc_handler") ‒ 5.7-rc1 and up

The access_ok() check in copy_to_user() in proc_copyout_string() would
always fail, so all userspace reads and writes would fail with EINVAL

proc_dostring() strips only the final new-line,
but simple_strtoul() doesn't actually need a back-trimmed string ‒
writing "012345678   \n" is still allowed, as is "012345678zupsko", &c.

This alters what happens when an invalid value is written ‒
previously it'd get set to what-ever simple_strtoul() returned
(probably 0, thereby resetting it to default), now it does nothing

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #11878
Closes #11879
module/os/linux/spl/spl-proc.c