X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=early.c;h=e86e4dd1ad368907b63705e1e68be60c53d67f9a;hp=063e1a6abcc8ecdf22b9c8c11b2e81cc2460bcea;hb=b5e17105b163442a030559b7b2c2454b82b3fd4c;hpb=be950c5e56b86509e1e237931d0ac8203372be82 diff --git a/early.c b/early.c index 063e1a6..e86e4dd 100644 --- a/early.c +++ b/early.c @@ -24,19 +24,19 @@ 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) @@ -49,14 +49,12 @@ static void early_console(const char *dev) struct stat s; int dd; - if (stat(dev, &s)) - mkdev("*console", 0600); + if (stat(dev, &s)) { + ERROR("Failed to stat %s\n", dev); + return; + } 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 +63,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)