From: Lennart Poettering Date: Wed, 4 Jun 2014 14:59:13 +0000 (+0200) Subject: core: make sure PrivateDevices= makes /dev/log available X-Git-Tag: v214~84 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=82d252404a7ee6bd5f24482a0b50a8e91aa93257 core: make sure PrivateDevices= makes /dev/log available Now that we moved the actual syslog socket to /run/systemd/journal/dev-log we can actually make /dev/log a symlink to it, when PrivateDevices= is used, thus making syslog available to services using PrivateDevices=. --- diff --git a/src/core/namespace.c b/src/core/namespace.c index de09e9f2c..16540043a 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -143,7 +143,7 @@ static int mount_dev(BindMount *m) { "/dev/tty\0"; char temporary_mount[] = "/tmp/namespace-dev-XXXXXX"; - const char *d, *dev = NULL, *devpts = NULL, *devshm = NULL, *devkdbus = NULL, *devhugepages = NULL, *devmqueue = NULL; + const char *d, *dev = NULL, *devpts = NULL, *devshm = NULL, *devkdbus = NULL, *devhugepages = NULL, *devmqueue = NULL, *devlog = NULL; _cleanup_umask_ mode_t u; int r; @@ -188,6 +188,9 @@ static int mount_dev(BindMount *m) { mkdir(devhugepages, 0755); mount("/dev/hugepages", devhugepages, NULL, MS_BIND, NULL); + devlog = strappenda(temporary_mount, "/dev/log"); + symlink("/run/systemd/journal/dev-log", devlog); + NULSTR_FOREACH(d, devnodes) { _cleanup_free_ char *dn = NULL; struct stat st; diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c index f9a6ed44e..f3f6f7304 100644 --- a/src/initctl/initctl.c +++ b/src/initctl/initctl.c @@ -383,7 +383,8 @@ int main(int argc, char *argv[]) { umask(0022); - if ((n = sd_listen_fds(true)) < 0) { + n = sd_listen_fds(true); + if (n < 0) { log_error("Failed to read listening file descriptors from environment: %s", strerror(-r)); return EXIT_FAILURE; }