Fix event type reporting when calling 'procd_shutdown'.
[project/procd.git] / early.c
diff --git a/early.c b/early.c
index 063e1a6..f9e3277 100644 (file)
--- a/early.c
+++ b/early.c
 
 static void early_mounts(void)
 {
-       mount("proc", "/proc", "proc", 0, 0);
-       mount("sysfs", "/sys", "sysfs", 0, 0);
+       mount("proc", "/proc", "proc", MS_NOATIME, 0);
+       mount("sysfs", "/sys", "sysfs", MS_NOATIME, 0);
 
-       mount("tmpfs", "/tmp", "tmpfs", MS_NOSUID | MS_NODEV, "size=512k,mode=1777");
+       mount("tmpfs", "/tmp", "tmpfs", MS_NOSUID | MS_NODEV | MS_NOATIME, NULL);
        mkdir("/tmp/run", 0777);
        mkdir("/tmp/lock", 0777);
        mkdir("/tmp/state", 0777);
        symlink("/tmp", "/var");
 
-       mount("tmpfs", "/dev", "tmpfs", 0, "mode=0755,size=512K");
+       mount("tmpfs", "/dev", "tmpfs", MS_NOATIME, "mode=0755,size=512K");
        mkdir("/dev/shm", 0755);
        mkdir("/dev/pts", 0755);
-       mount("devpts", "/dev/pts", "devpts", 0, 0);
+       mount("devpts", "/dev/pts", "devpts", MS_NOATIME, "mode=600");
 }
 
 static void early_dev(void)
@@ -53,10 +53,6 @@ static void early_console(const char *dev)
                mkdev("*console", 0600);
 
        dd = open(dev, O_RDWR);
-       close(STDIN_FILENO);
-       close(STDOUT_FILENO);
-       close(STDERR_FILENO);
-
        if (dd < 0) {
                ERROR("Failed to open %s\n", dev);
                return;
@@ -65,7 +61,11 @@ static void early_console(const char *dev)
        dup2(dd, STDIN_FILENO);
        dup2(dd, STDOUT_FILENO);
        dup2(dd, STDERR_FILENO);
-       close(dd);
+
+       if (dd != STDIN_FILENO &&
+           dd != STDOUT_FILENO &&
+           dd != STDERR_FILENO)
+               close(dd);
 }
 
 static void early_env(void)