fstools: fix a couple of minor code problems
[project/fstools.git] / libfstools / overlay.c
index 508d23fc76aa13b29788bf8310df70ff37e2880a..5de12c52b683a2655068ec6d4fe25abbc07d7f80 100644 (file)
@@ -175,20 +175,27 @@ static int
 switch2jffs(struct volume *v)
 {
        struct stat s;
-       int ret;
+       int ret, fd;
 
        if (!stat(SWITCH_JFFS2, &s)) {
                ULOG_ERR("jffs2 switch already running\n");
                return -1;
        }
 
-       creat(SWITCH_JFFS2, 0600);
+       fd = creat(SWITCH_JFFS2, 0600);
+       if (fd == -1) {
+               ULOG_ERR("failed - cannot create jffs2 switch mark: %m\n");
+               return -1;
+       }
+       close(fd);
+
        ret = mount(v->blk, OVERLAYDIR, "jffs2", MS_NOATIME, NULL);
        unlink(SWITCH_JFFS2);
        if (ret) {
                ULOG_ERR("failed - mount -t jffs2 %s %s: %m\n", v->blk, OVERLAYDIR);
                return -1;
        }
+       selinux_restorecon(OVERLAYDIR);
 
        if (mount("none", "/", NULL, MS_NOATIME | MS_REMOUNT, 0)) {
                ULOG_ERR("failed - mount -o remount,ro none: %m\n");
@@ -315,7 +322,7 @@ jffs2_switch(struct volume *v)
                foreachdir("/overlay/", handle_whiteout);
 
                /* try hard to be in sync */
-               ULOG_INFO("syncronizing overlay\n");
+               ULOG_INFO("synchronizing overlay\n");
                if (system("cp -a /tmp/root/upper/* / 2>/dev/null"))
                        ULOG_ERR("failed to sync jffs2 overlay\n");
                break;