Re: [PATCH 1/1] kernel/utsname_sysctl.c: Add missing enum uts_proc value

From: Petr Vorel
Date: Thu Oct 20 2022 - 11:14:24 EST


Hi all,

[ Cc regressions@xxxxxxxxxxxxxxx ]

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 <torsten.hilbrich@xxxxxxxxxxx>
> Signed-off-by: Petr Vorel <pvorel@xxxxxxx>
> ---
> 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/0c2b92a6-0f25-9538-178f-eee3b06da23f@xxxxxxxxxxx/
> [2] https://lore.kernel.org/lkml/ec9e00b9-8b47-7918-c39b-8b0069003169@xxxxxxxxxxx/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,