From 3a9e949f6d4cad085d645b2efbc126cdbc48773a Mon Sep 17 00:00:00 2001 From: Tycho Andersen Date: Fri, 19 Jan 2018 00:50:39 +0000 Subject: [PATCH] start: don't log stop/continue for non-init processes This non-init forwarding check should really be before all the log messages about "init continued" or "init stopped", since they will otherwise lie about some process that wasn't init being stopped or continued. Signed-off-by: Tycho Andersen --- src/lxc/start.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lxc/start.c b/src/lxc/start.c index 89a194fd1..8b4144239 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -323,6 +323,14 @@ static int signal_handler(int fd, uint32_t events, void *data, if (ret == 0 && info.si_pid == hdlr->pid) hdlr->init_died = true; + /* More robustness, protect ourself from a SIGCHLD sent + * by a process different from the container init. + */ + if (siginfo.ssi_pid != hdlr->pid) { + NOTICE("Received %d from pid %d instead of container init %d.", siginfo.ssi_signo, siginfo.ssi_pid, hdlr->pid); + return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0; + } + if (siginfo.ssi_signo != SIGCHLD) { kill(hdlr->pid, siginfo.ssi_signo); INFO("Forwarded signal %d to pid %d.", siginfo.ssi_signo, hdlr->pid); @@ -337,14 +345,6 @@ static int signal_handler(int fd, uint32_t events, void *data, return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0; } - /* More robustness, protect ourself from a SIGCHLD sent - * by a process different from the container init. - */ - if (siginfo.ssi_pid != hdlr->pid) { - NOTICE("Received SIGCHLD from pid %d instead of container init %d.", siginfo.ssi_pid, hdlr->pid); - return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0; - } - DEBUG("Container init process %d exited.", hdlr->pid); return LXC_MAINLOOP_CLOSE; } -- 2.47.2