bfca3dd3d068 added new struct ctl_table uts_kern_table[], but not new
enum uts_proc value. It broke the notification mechanism between the
sethostname syscall and the pollers of /proc/sys/kernel/hostname.
The table uts_kern_table is addressed within uts_proc_notify by the enum
value, that's why new enum value is needed.
Fixes: bfca3dd3d068 ("kernel/utsname_sysctl.c: print kernel arch")
Reported-by: Torsten Hilbrich <[email protected]>
Signed-off-by: Petr Vorel <[email protected]>
---
Hi all,
I'm sorry to introduce a regression.
Torsten Hilbrich reported [1] that hostnamectl set-hostname foo
which does poll() got affected by bfca3dd3d068. He also wrote a
reproducer [2] which does not require systemd, I tested the patch on
dracut initramfs.
Kind regards,
Petr
[1] https://lore.kernel.org/lkml/[email protected]/
[2] https://lore.kernel.org/lkml/[email protected]/2-hostname-poll-test.c
include/linux/utsname.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/linux/utsname.h b/include/linux/utsname.h
index 2b1737c9b244..bf7613ba412b 100644
--- a/include/linux/utsname.h
+++ b/include/linux/utsname.h
@@ -10,6 +10,7 @@
#include <uapi/linux/utsname.h>
enum uts_proc {
+ UTS_PROC_ARCH,
UTS_PROC_OSTYPE,
UTS_PROC_OSRELEASE,
UTS_PROC_VERSION,
--
2.38.0
Hi all,
[ Cc [email protected] ]
Kind regards,
Petr
> bfca3dd3d068 added new struct ctl_table uts_kern_table[], but not new
> enum uts_proc value. It broke the notification mechanism between the
> sethostname syscall and the pollers of /proc/sys/kernel/hostname.
> The table uts_kern_table is addressed within uts_proc_notify by the enum
> value, that's why new enum value is needed.
> Fixes: bfca3dd3d068 ("kernel/utsname_sysctl.c: print kernel arch")
> Reported-by: Torsten Hilbrich <[email protected]>
> Signed-off-by: Petr Vorel <[email protected]>
> ---
> Hi all,
> I'm sorry to introduce a regression.
> Torsten Hilbrich reported [1] that hostnamectl set-hostname foo
> which does poll() got affected by bfca3dd3d068. He also wrote a
> reproducer [2] which does not require systemd, I tested the patch on
> dracut initramfs.
> Kind regards,
> Petr
> [1] https://lore.kernel.org/lkml/[email protected]/
> [2] https://lore.kernel.org/lkml/[email protected]/2-hostname-poll-test.c
> include/linux/utsname.h | 1 +
> 1 file changed, 1 insertion(+)
> diff --git a/include/linux/utsname.h b/include/linux/utsname.h
> index 2b1737c9b244..bf7613ba412b 100644
> --- a/include/linux/utsname.h
> +++ b/include/linux/utsname.h
> @@ -10,6 +10,7 @@
> #include <uapi/linux/utsname.h>
> enum uts_proc {
> + UTS_PROC_ARCH,
> UTS_PROC_OSTYPE,
> UTS_PROC_OSRELEASE,
> UTS_PROC_VERSION,
On Thu, Oct 20, 2022 at 05:06:45PM +0200, Petr Vorel wrote:
> bfca3dd3d068 added new struct ctl_table uts_kern_table[], but not new
> enum uts_proc value. It broke the notification mechanism between the
> sethostname syscall and the pollers of /proc/sys/kernel/hostname.
>
> The table uts_kern_table is addressed within uts_proc_notify by the enum
> value, that's why new enum value is needed.
>
> Fixes: bfca3dd3d068 ("kernel/utsname_sysctl.c: print kernel arch")
>
> Reported-by: Torsten Hilbrich <[email protected]>
> Signed-off-by: Petr Vorel <[email protected]>
> ---
> Hi all,
>
> I'm sorry to introduce a regression.
>
> Torsten Hilbrich reported [1] that hostnamectl set-hostname foo
> which does poll() got affected by bfca3dd3d068. He also wrote a
> reproducer [2] which does not require systemd, I tested the patch on
> dracut initramfs.
Thanks for the quick response, I'll queue this up in my tree now.
greg k-h