X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=initd%2Fzram.c;h=d438372469451fa3a8c7794435e1a6e8beacf19f;hp=4dc1d2ee459dd68c2bf40107672d452473afbdbe;hb=fa5ce1c2b4fe3fa6bb4bbc6697961655b952d8d4;hpb=e1a27d486c2374f46abd264f3fd6561815155ebd diff --git a/initd/zram.c b/initd/zram.c index 4dc1d2e..d438372 100644 --- a/initd/zram.c +++ b/initd/zram.c @@ -30,7 +30,7 @@ proc_meminfo(void) fp = fopen("/proc/meminfo", "r"); if (fp == NULL) { - ERROR("Can't open /proc/meminfo: %s\n", strerror(errno)); + ERROR("Can't open /proc/meminfo: %m\n"); return errno; } @@ -44,7 +44,7 @@ proc_meminfo(void) fclose(fp); if (val > KB(32)) - val = KB(16); + val = KB(32); return val; } @@ -53,23 +53,23 @@ static int early_insmod(char *module) { pid_t pid = fork(); + char *modprobe[] = { "/sbin/modprobe", NULL, NULL }; if (!pid) { - char *modprobe[] = { "/usr/sbin/modprobe", NULL, NULL }; char *path; struct utsname ver; uname(&ver); - path = alloca(sizeof(module) + strlen(ver.release) + 1); + path = alloca(strlen(module) + strlen(ver.release) + 1); sprintf(path, module, ver.release); modprobe[1] = path; execvp(modprobe[0], modprobe); - ERROR("Can't exec /usr/sbin/modprobe\n"); + ERROR("Can't exec %s\n", modprobe[0]); exit(-1); } if (pid <= 0) { - ERROR("Can't exec /usr/sbin/modprobe\n"); + ERROR("Can't exec %s\n", modprobe[0]); return -1; } else { waitpid(pid, NULL, 0); @@ -98,7 +98,7 @@ mount_zram_on_tmp(void) zramsize = proc_meminfo() / 2; fp = fopen("/sys/block/zram0/disksize", "r+"); if (fp == NULL) { - ERROR("Can't open /sys/block/zram0/disksize: %s\n", strerror(errno)); + ERROR("Can't open /sys/block/zram0/disksize: %m\n"); return errno; } fprintf(fp, "%ld", KB(zramsize)); @@ -107,10 +107,10 @@ mount_zram_on_tmp(void) pid = fork(); if (!pid) { execvp(mkfs[0], mkfs); - ERROR("Can't exec /sbin/mkfs.ext4\n"); + ERROR("Can't exec %s\n", mkfs[0]); exit(-1); } else if (pid <= 0) { - ERROR("Can't exec /sbin/mkfs.ext4\n"); + ERROR("Can't exec %s\n", mkfs[0]); return -1; } else { waitpid(pid, NULL, 0); @@ -118,11 +118,17 @@ mount_zram_on_tmp(void) ret = mount("/dev/zram0", "/tmp", "ext4", MS_NOSUID | MS_NODEV | MS_NOATIME, "errors=continue,noquota"); if (ret < 0) { - ERROR("Can't mount /dev/zram0 on /tmp: %s\n", strerror(errno)); + ERROR("Can't mount /dev/zram0 on /tmp: %m\n"); return errno; } LOG("Using up to %ld kB of RAM as ZRAM storage on /mnt\n", zramsize); + ret = chmod("/tmp", 01777); + if (ret < 0) { + ERROR("Can't set /tmp mode to 1777: %m\n"); + return errno; + } + return 0; }