libfstools: call volume_init() before accessing v->blk
authorFelix Fietkau <nbd@nbd.name>
Wed, 7 Sep 2016 15:30:09 +0000 (17:30 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 8 Sep 2016 11:05:57 +0000 (13:05 +0200)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
jffs2reset.c
libfstools/overlay.c
libfstools/ubi.c
mount_root.c
snapshot.c

index 97fd0ab51b5fd9d97a84f6729b6804b35a99da7b..9a31fdd487715f8b56d93531c45b4c53d446ef5f 100644 (file)
@@ -125,6 +125,7 @@ int main(int argc, char **argv)
                return -1;
        }
 
+       volume_init(v);
        if (!strcmp(*argv, "jffs2mark"))
                return jffs2_mark(v);
        return jffs2_reset(v, reset);
index db80798a53620896c46bb4cb40004be43a3c6622..f68065e4fb7e598f0c9e49296add7966be39be2e 100644 (file)
@@ -111,7 +111,7 @@ overlay_mount(struct volume *v, char *fs)
                return -1;
        }
 
-       return volume_init(v);
+       return 0;
 }
 
 static int
@@ -206,6 +206,7 @@ jffs2_switch(struct volume *v)
                return ret;
        }
 
+       volume_init(v);
        mp = find_mount_point(v->blk, 0);
        if (mp) {
                ULOG_ERR("rootfs_data:%s is already mounted as %s\n", v->blk, mp);
@@ -272,8 +273,6 @@ static int overlay_mount_fs(struct volume *v)
                break;
        }
 
-       volume_init(v);
-
        if (mount(v->blk, "/tmp/overlay", fstype, MS_NOATIME, NULL)) {
                ULOG_ERR("failed to mount -t %s %s /tmp/overlay: %s\n",
                         fstype, v->blk, strerror(errno));
index c5a33df553561bc7503943d23fc7c7fc61362265..c1dce46417fea39e96703429d0c40e0c35fb3d22 100644 (file)
@@ -160,7 +160,7 @@ static int ubi_volume_match(struct volume *v, char *name, int ubi_num, int volid
        p->ubi_num = ubi_num;
        p->ubi_volid = volid;
 
-       return ubi_volume_init(v);
+       return 0;
 }
 
 static int ubi_part_match(struct volume *v, char *name, unsigned int ubi_num)
index 6e06b45806e5e05ae660f7692a6a1585bd220ef4..dbe1d658569a3498b7ef59dd48e19634cd8632c1 100644 (file)
@@ -56,6 +56,7 @@ start(int argc, char *argv[1])
        }
 
        /* There isn't extroot, so just try to mount "rootfs_data" */
+       volume_init(data);
        switch (volume_identify(data)) {
        case FS_NONE:
                ULOG_WARN("no usable overlay filesystem found, using tmpfs overlay\n");
index 6552a74c3f2dd2f95870dbf39295bf28cc84a50c..bb44cd3fee288d040e66c980001568f801fc43d7 100644 (file)
@@ -45,6 +45,7 @@ config_write(int argc, char **argv)
        if (!v)
                return -1;
 
+       volume_init(v);
        ret = volatile_write(v, 0);
        if (!ret)
                ret = sentinel_write(v, 0);
@@ -63,6 +64,7 @@ config_read(int argc, char **argv)
        if (!v)
                return -1;
 
+       volume_init(v);
        block = config_find(v, &conf, &sentinel);
        next = snapshot_next_free(v, &seq);
        if (is_config(&conf) && conf.seq == seq)
@@ -89,6 +91,7 @@ snapshot_write(int argc, char **argv)
        if (!v)
                return -1;
 
+       volume_init(v);
        block = snapshot_next_free(v, &seq);
        if (block < 0)
                block = 0;
@@ -120,6 +123,8 @@ snapshot_mark(int argc, char **argv)
                return -1;
        }
 
+       volume_init(v);
+
        fd = open(v->blk, O_WRONLY);
        ULOG_INFO("%s - marking with 0x%08x\n", v->blk, owrt);
        if (fd < 0) {
@@ -148,6 +153,7 @@ snapshot_read(int argc, char **argv)
        if (!v)
                return -1;
 
+       volume_init(v);
        if (argc > 2) {
                block = atoi(argv[2]);
                if (block >= (v->size / v->block_size)) {
@@ -180,6 +186,7 @@ snapshot_info(void)
        if (!v)
                return -1;
 
+       volume_init(v);
        ULOG_INFO("sectors:\t%" PRIu64 ", block_size:\t%dK\n",
                  (uint64_t) v->size / v->block_size, v->block_size / 1024);
        do {