From: Ferenc Wagner <wf...@niif.hu>

Signed-off-by: Ferenc Wagner <wf...@niif.hu>
Signed-off-by: Daniel Lezcano <dlezc...@fr.ibm.com>
---
 src/lxc/start.c |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/lxc/start.c b/src/lxc/start.c
index dc57bea..92f44e3 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -195,13 +195,13 @@ static int setup_sigchld_fd(sigset_t *oldmask)
        sigset_t mask;
        int fd;
 
-       if (sigprocmask(SIG_BLOCK, NULL, &mask)) {
-               SYSERROR("failed to get mask signal");
-               return -1;
-       }
-
-       if (sigaddset(&mask, SIGCHLD) || sigprocmask(SIG_BLOCK, &mask, 
oldmask)) {
-               SYSERROR("failed to set mask signal");
+       /* Block everything except serious error signals */
+       if (sigfillset(&mask) ||
+           sigdelset(&mask, SIGILL) ||
+           sigdelset(&mask, SIGSEGV) ||
+           sigdelset(&mask, SIGBUS) ||
+           sigprocmask(SIG_BLOCK, &mask, oldmask)) {
+               SYSERROR("failed to set signal mask");
                return -1;
        }
 
@@ -231,7 +231,7 @@ static int sigchld_handler(int fd, void *data,
 
        ret = read(fd, &siginfo, sizeof(siginfo));
        if (ret < 0) {
-               ERROR("failed to read sigchld info");
+               ERROR("failed to read signal info");
                return -1;
        }
 
@@ -240,6 +240,12 @@ static int sigchld_handler(int fd, void *data,
                return -1;
        }
 
+       if (siginfo.ssi_signo != SIGCHLD) {
+               kill(*pid, siginfo.ssi_signo);
+               INFO("forwarded signal %d to pid %d", siginfo.ssi_signo, *pid);
+               return 0;
+       }
+
        if (siginfo.ssi_code == CLD_STOPPED ||
            siginfo.ssi_code == CLD_CONTINUED) {
                INFO("container init process was stopped/continued");
-- 
1.7.0.4


------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to