[PATCH procd] hotplug.c: set nl_pid to zero
John Crispin
john at phrozen.org
Mon Jan 25 08:14:47 EST 2021
On 24.01.21 23:58, eichest at gmail.com wrote:
> From: Stefan Eichenberger <eichest at gmail.com>
>
> With the current solution where nl_pid is set through getpid we run into
> problems when running procd in a different PID namespace (e.g.
> container). The PID number inside the active PID namespace will be set
> which doesn't match the global PID. Therefore, procd will never receive
> any netlink messages.
>
> By setting nl_pid to zero the kernel will assign the global PID
> automatically and fixes the issue.
>
> Signed-off-by: Stefan Eichenberger <eichest at gmail.com>
> ---
> plug/hotplug.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/plug/hotplug.c b/plug/hotplug.c
> index 9aeb1c1..beff38a 100644
> --- a/plug/hotplug.c
> +++ b/plug/hotplug.c
> @@ -612,7 +612,7 @@ void hotplug(char *rules)
>
> rule_file = strdup(rules);
> nls.nl_family = AF_NETLINK;
> - nls.nl_pid = getpid();
> + nls.nl_pid = 0;
> nls.nl_groups = -1;
>
> if ((hotplug_fd.fd = socket(PF_NETLINK, SOCK_DGRAM | SOCK_CLOEXEC, NETLINK_KOBJECT_UEVENT)) == -1) {
Acked-by: John Crispin <john at phrozen.org>
Just tested this locally outside a pid namespace.
More information about the openwrt-devel
mailing list