procd: detect lxc container and behave accordingly
[oweals/procd.git] / plug / coldplug.c
index c6a89c30a6fc2e11539f7643d4fde41c12bbbf62..12df421bb205c4074a4f08af4493bec3d9d37891 100644 (file)
@@ -22,6 +22,7 @@
 #include "../libc-compat.h"
 
 #include "hotplug.h"
+#include "../container.h"
 
 static struct uloop_process udevtrigger;
 
@@ -43,13 +44,16 @@ void procd_coldplug(void)
        char *argv[] = { "udevtrigger", NULL };
        unsigned int oldumask = umask(0);
 
-       umount2("/dev/pts", MNT_DETACH);
-       umount2("/dev/", MNT_DETACH);
-       mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755,size=512K");
+       if (!is_container()) {
+               umount2("/dev/pts", MNT_DETACH);
+               umount2("/dev/", MNT_DETACH);
+               mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755,size=512K");
+               mkdir("/dev/pts", 0755);
+               mount("devpts", "/dev/pts", "devpts", MS_NOEXEC | MS_NOSUID, 0);
+       }
+
        ignore(symlink("/tmp/shm", "/dev/shm"));
-       mkdir("/dev/pts", 0755);
        umask(oldumask);
-       mount("devpts", "/dev/pts", "devpts", MS_NOEXEC | MS_NOSUID, 0);
        udevtrigger.cb = udevtrigger_complete;
        udevtrigger.pid = fork();
        if (!udevtrigger.pid) {