X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=target%2Flinux%2Fgeneric%2Ffiles%2Fdrivers%2Fmtd%2Fmtdsplit%2Fmtdsplit_seama.c;h=ee0444a43e0c2a0c4c62b559a64b01ed5cd6a1bc;hp=228b8997ad7e09cd7c8a37638fbceb8750bdd816;hb=1a57ce0c03b8c33a69c3a87d537d1a61a666f046;hpb=e1491b341b212000bc26f68b55d9a060b9c48625 diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c index 228b8997ad..ee0444a43e 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c @@ -26,6 +26,7 @@ struct seama_header { __be16 reserved; /* reserved for */ __be16 metasize; /* size of the META data */ __be32 size; /* size of the image */ + u8 md5[16]; /* digest */ }; static int mtdsplit_parse_seama(struct mtd_info *master, @@ -36,6 +37,7 @@ static int mtdsplit_parse_seama(struct mtd_info *master, size_t hdr_len, retlen, kernel_ent_size; size_t rootfs_offset; struct mtd_partition *parts; + enum mtdsplit_part_type type; int err; hdr_len = sizeof(hdr); @@ -56,7 +58,7 @@ static int mtdsplit_parse_seama(struct mtd_info *master, return -EINVAL; /* Check for the rootfs right after Seama entity with a kernel. */ - err = mtd_check_rootfs_magic(master, kernel_ent_size, NULL); + err = mtd_check_rootfs_magic(master, kernel_ent_size, &type); if (!err) { rootfs_offset = kernel_ent_size; } else { @@ -67,7 +69,7 @@ static int mtdsplit_parse_seama(struct mtd_info *master, * Start the search from an arbitrary offset. */ err = mtd_find_rootfs_from(master, SEAMA_MIN_ROOTFS_OFFS, - master->size, &rootfs_offset, NULL); + master->size, &rootfs_offset, &type); if (err) return err; } @@ -80,7 +82,10 @@ static int mtdsplit_parse_seama(struct mtd_info *master, parts[0].offset = 0; parts[0].size = rootfs_offset; - parts[1].name = ROOTFS_PART_NAME; + if (type == MTDSPLIT_PART_TYPE_UBI) + parts[1].name = UBI_PART_NAME; + else + parts[1].name = ROOTFS_PART_NAME; parts[1].offset = rootfs_offset; parts[1].size = master->size - rootfs_offset;