** Description changed: + [Impact] - Reading /proc/sys/kernel/spl/hostid no longer works in 5.7+ kernels + Reading /proc/sys/kernel/spl/hostid no longer works in 5.7+ kernels upwards. The Fix: commit 7de4c88b39473f358add601e8c227ca9002b1bee Author: наб <[email protected]> Date: Sun Apr 11 01:18:40 2021 +0200 + linux/spl: base proc_dohostid() on proc_dostring() - 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 - 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 - 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. - 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 - 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 <[email protected]> + Signed-off-by: Ahelenia Ziemiańska <[email protected]> + Closes #11878 + Closes #11879 - Reviewed-by: Brian Behlendorf <[email protected]> - Signed-off-by: Ahelenia Ziemiańska <[email protected]> - Closes #11878 - Closes #11879 + + This applies cleanly for Impish and Hirsute 2.x ZFS so backporting is straight forward. + + [Test Plan] + + cat /proc/sys/kernel/spl/hostid fails without the fix. With the fix it + returns a hex string of the hostid value. + + [Where problems could occur] + + This affects just a few /proc spl interfaces so the change is a low- + impact fix. Not many folk even use these and nobody has reported this as + a bug so the number of affected users is expected to be very small. I + suspect nobody is reading the hostid from /proc as this information is + available elsewhere and it's rather an old legacy interface. + + The affected change is from upstream ZFS 2.x hence the patch applies + cleanly. + + This fix has been in upstream ZFS for several months with no reported + regressions. + + The change does not affect any core ZFS functionality. + + Regression tested against the Ubuntu ZFS regression test suite and + passed.
-- You received this bug notification because you are a member of Kernel Packages, which is subscribed to zfs-linux in Ubuntu. https://bugs.launchpad.net/bugs/1942991 Title: zfs: can't read /proc/sys/kernel/spl/hostid Status in zfs-linux package in Ubuntu: In Progress Status in zfs-linux source package in Hirsute: In Progress Status in zfs-linux source package in Impish: In Progress Bug description: [Impact] Reading /proc/sys/kernel/spl/hostid no longer works in 5.7+ kernels upwards. The Fix: commit 7de4c88b39473f358add601e8c227ca9002b1bee Author: наб <[email protected]> Date: Sun Apr 11 01:18:40 2021 +0200 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 <[email protected]> Signed-off-by: Ahelenia Ziemiańska <[email protected]> Closes #11878 Closes #11879 This applies cleanly for Impish and Hirsute 2.x ZFS so backporting is straight forward. [Test Plan] cat /proc/sys/kernel/spl/hostid fails without the fix. With the fix it returns a hex string of the hostid value. [Where problems could occur] This affects just a few /proc spl interfaces so the change is a low- impact fix. Not many folk even use these and nobody has reported this as a bug so the number of affected users is expected to be very small. I suspect nobody is reading the hostid from /proc as this information is available elsewhere and it's rather an old legacy interface. The affected change is from upstream ZFS 2.x hence the patch applies cleanly. This fix has been in upstream ZFS for several months with no reported regressions. The change does not affect any core ZFS functionality. Regression tested against the Ubuntu ZFS regression test suite and passed. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1942991/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp

