]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
start: non-functional changes
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 31 Dec 2017 00:48:01 +0000 (01:48 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Tue, 9 Jan 2018 12:20:25 +0000 (13:20 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/start.c

index 5a5556d86e4676b128337f01cd6a5f08793cd960..f6e1a961f32c62fde3c37b4a6ec7f44bd595f83b 100644 (file)
@@ -266,35 +266,36 @@ restart:
 
 static int setup_signal_fd(sigset_t *oldmask)
 {
+       int ret, sig;
        sigset_t mask;
-       int fd;
+       int signals[] = {SIGBUS, SIGILL, SIGSEGV, SIGWINCH};
 
        /* Block everything except serious error signals. */
-       if (sigfillset(&mask) ||
-           sigdelset(&mask, SIGILL) ||
-           sigdelset(&mask, SIGSEGV) ||
-           sigdelset(&mask, SIGBUS) ||
-           sigdelset(&mask, SIGWINCH) ||
-           sigprocmask(SIG_BLOCK, &mask, oldmask)) {
-               SYSERROR("Failed to set signal mask.");
-               return -1;
+       ret = sigfillset(&mask);
+       if (ret < 0)
+               return -EBADF;
+
+       for (sig = 0; sig < (sizeof(signals) / sizeof(signals[0])); sig++) {
+               ret = sigdelset(&mask, signals[sig]);
+               if (ret < 0)
+                       return -EBADF;
        }
 
-       fd = signalfd(-1, &mask, 0);
-       if (fd < 0) {
-               SYSERROR("Failed to create signal file descriptor.");
-               return -1;
+       ret = sigprocmask(SIG_BLOCK, &mask, oldmask);
+       if (ret < 0) {
+               SYSERROR("Failed to set signal mask");
+               return -EBADF;
        }
 
-       if (fcntl(fd, F_SETFD, FD_CLOEXEC)) {
-               SYSERROR("Failed to set FD_CLOEXEC on the signal file descriptor: %d.", fd);
-               close(fd);
-               return -1;
+       ret = signalfd(-1, &mask, SFD_CLOEXEC);
+       if (ret < 0) {
+               SYSERROR("Failed to create signal file descriptor");
+               return -EBADF;
        }
 
-       DEBUG("Set SIGCHLD handler with file descriptor: %d.", fd);
+       TRACE("Created signal file descriptor %d", ret);
 
-       return fd;
+       return ret;
 }
 
 static int signal_handler(int fd, uint32_t events, void *data,