X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnspawn.c;h=b5908d63fffc4320e179778900f35873fb021bb2;hp=aaa5d1f9d0c0d43aafeb0fa47887ec6b2d0732e9;hb=91f9dcaf9270fe465525638cc08bd94590273349;hpb=715ac17a84f7d721dec613d86d83e671704fafcc diff --git a/src/nspawn.c b/src/nspawn.c index aaa5d1f9d..b5908d63f 100644 --- a/src/nspawn.c +++ b/src/nspawn.c @@ -117,7 +117,7 @@ static int mount_all(const char *dest) { { "sysfs", "/sys", "sysfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, true }, { "tmpfs", "/dev", "tmpfs", "mode=755", MS_NOSUID, true }, { "/dev/pts", "/dev/pts", "bind", NULL, MS_BIND, true }, - { "tmpfs", "/dev/.run", "tmpfs", "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV, true }, + { "tmpfs", "/run", "tmpfs", "mode=755", MS_NOSUID|MS_NODEV, true }, #ifdef HAVE_SELINUX { "selinux", "/selinux", "selinuxfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, false }, #endif @@ -374,6 +374,7 @@ static int is_os_tree(const char *path) { #define BUFFER_SIZE 1024 static int process_pty(int master, sigset_t *mask) { + char in_buffer[BUFFER_SIZE], out_buffer[BUFFER_SIZE]; size_t in_buffer_full = 0, out_buffer_full = 0; struct epoll_event stdin_ev, stdout_ev, master_ev, signal_ev; @@ -464,11 +465,13 @@ static int process_pty(int master, sigset_t *mask) { if ((n = read(signal_fd, &sfsi, sizeof(sfsi))) != sizeof(sfsi)) { if (n >= 0) { + log_error("Failed to read from signalfd: invalid block size"); r = -EIO; goto finish; } if (errno != EINTR && errno != EAGAIN) { + log_error("Failed to read from signalfd: %m"); r = -errno; goto finish; } @@ -481,7 +484,7 @@ static int process_pty(int master, sigset_t *mask) { if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) >= 0) ioctl(master, TIOCSWINSZ, &ws); } else { - r = -EINTR; + r = 0; goto finish; } } @@ -501,6 +504,7 @@ static int process_pty(int master, sigset_t *mask) { stdin_readable = false; else { log_error("read(): %m"); + r = -errno; goto finish; } } else @@ -515,6 +519,7 @@ static int process_pty(int master, sigset_t *mask) { master_writable = false; else { log_error("write(): %m"); + r = -errno; goto finish; } @@ -533,6 +538,7 @@ static int process_pty(int master, sigset_t *mask) { master_readable = false; else { log_error("read(): %m"); + r = -errno; goto finish; } } else @@ -547,6 +553,7 @@ static int process_pty(int master, sigset_t *mask) { stdout_writable = false; else { log_error("write(): %m"); + r = -errno; goto finish; }