]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
mount /dev/mqueue
authorDaniel Lezcano <dlezcano@fr.ibm.com>
Thu, 15 Oct 2009 12:17:14 +0000 (14:17 +0200)
committerDaniel Lezcano <dlezcano@fr.ibm.com>
Thu, 15 Oct 2009 12:17:14 +0000 (14:17 +0200)
Mount always /dev/mqueue with lxc_init.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/lxc-setcap.in
src/lxc/lxc_init.c

index 69c5bc56f1fe4d301d81a4f35109720ed533c6a2..19203c23a8e55209f270441438d4616c6a3a7206 100644 (file)
@@ -27,7 +27,7 @@
 
 LXC_CREATE_CAPS="cap_sys_admin"
 LXC_NETSTAT_CAPS="cap_sys_admin"
-LXC_INIT_CAPS="cap_sys_admin"
+LXC_INIT_CAPS="cap_sys_admin,cap_dac_override"
 LXC_UNSHARE_CAPS="cap_net_admin,cap_net_raw,cap_sys_admin,cap_dac_override"
 LXC_START_CAPS="cap_fowner,cap_sys_chroot,cap_setpcap,cap_net_admin,cap_net_raw,cap_sys_admin,cap_dac_override"
 LXC_EXECUTE_CAPS=$LXC_START_CAPS
index 2fee985866221b87cd5d92db99858cff28fee39d..deef34310d291fcf49233c58f40172ef617785d8 100644 (file)
@@ -27,6 +27,7 @@
 #include <errno.h>
 #include <signal.h>
 #include <libgen.h>
+#include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <sys/mount.h>
@@ -49,7 +50,7 @@ static struct option options[] = {
 
 static int mount_fs(const char *source, const char *target, const char *type)
 {
-       /* sometimes the umount fails */
+       /* the umount may fail */
        if (umount(target))
                WARN("failed to unmount %s : %s", target, strerror(errno));
 
@@ -71,6 +72,15 @@ static inline int setup_fs(void)
        if (mount_fs("shmfs", "/dev/shm", "tmpfs"))
                return -1;
 
+       /* If we were able to mount /dev/shm, then /dev exists */
+       if (access("/dev/mqueue", F_OK) && mkdir("/dev/mqueue", 0666)) {
+               SYSERROR("failed to create '/dev/mqueue'");
+               return -1;
+       }
+
+       if (mount_fs("mqueue", "/dev/mqueue", "mqueue"))
+               return -1;
+
        return 0;
 }