diff options
author | Zoltan Herpai <wigyori@uid0.hu> | 2016-06-28 10:08:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-28 10:08:04 +0200 |
commit | eaeb4e48938014039899b0312e8e87da1073e348 (patch) | |
tree | 58519cde29158a1611b398c0e75b576125e5aa61 /package/system/mtd | |
parent | debeac0f833c2de3f15fe14135e365b6d8f54908 (diff) | |
parent | 3b0bfeac5cbb3df53755859299e9188981175b66 (diff) | |
download | master-187ad058-eaeb4e48938014039899b0312e8e87da1073e348.tar.gz master-187ad058-eaeb4e48938014039899b0312e8e87da1073e348.tar.bz2 master-187ad058-eaeb4e48938014039899b0312e8e87da1073e348.zip |
Merge pull request #16 from wigyori/master
Update bcm53xx, brcm63xx, octeon, and smaller patches
Diffstat (limited to 'package/system/mtd')
-rw-r--r-- | package/system/mtd/src/mtd.c | 8 | ||||
-rw-r--r-- | package/system/mtd/src/mtd.h | 2 | ||||
-rw-r--r-- | package/system/mtd/src/seama.c | 6 |
3 files changed, 9 insertions, 7 deletions
diff --git a/package/system/mtd/src/mtd.c b/package/system/mtd/src/mtd.c index af544198cb..7d1fc8df72 100644 --- a/package/system/mtd/src/mtd.c +++ b/package/system/mtd/src/mtd.c @@ -674,7 +674,7 @@ resume: break; case MTD_IMAGE_FORMAT_SEAMA: if (mtd_fixseama) - mtd_fixseama(mtd, 0); + mtd_fixseama(mtd, 0, 0); break; default: break; @@ -737,8 +737,10 @@ static void usage(void) if (mtd_fixtrx) { fprintf(stderr, " -o offset offset of the image header in the partition(for fixtrx)\n"); + } + if (mtd_fixtrx || mtd_fixseama) { fprintf(stderr, - " -c datasize amount of data to be used for checksum calculation (for fixtrx)\n"); + " -c datasize amount of data to be used for checksum calculation (for fixtrx / fixseama)\n"); } fprintf(stderr, #ifdef FIS_SUPPORT @@ -987,7 +989,7 @@ int main (int argc, char **argv) break; case CMD_FIXSEAMA: if (mtd_fixseama) - mtd_fixseama(device, 0); + mtd_fixseama(device, 0, data_size); break; } diff --git a/package/system/mtd/src/mtd.h b/package/system/mtd/src/mtd.h index 0a8b1ae0fd..9b2e32ffd4 100644 --- a/package/system/mtd/src/mtd.h +++ b/package/system/mtd/src/mtd.h @@ -26,6 +26,6 @@ extern void mtd_parse_jffs2data(const char *buf, const char *dir); extern int trx_fixup(int fd, const char *name) __attribute__ ((weak)); extern int trx_check(int imagefd, const char *mtd, char *buf, int *len) __attribute__ ((weak)); extern int mtd_fixtrx(const char *mtd, size_t offset, size_t data_size) __attribute__ ((weak)); -extern int mtd_fixseama(const char *mtd, size_t offset) __attribute__ ((weak)); +extern int mtd_fixseama(const char *mtd, size_t offset, size_t data_size) __attribute__ ((weak)); extern int mtd_resetbc(const char *mtd) __attribute__ ((weak)); #endif /* __mtd_h */ diff --git a/package/system/mtd/src/seama.c b/package/system/mtd/src/seama.c index f8b677b189..bcda321918 100644 --- a/package/system/mtd/src/seama.c +++ b/package/system/mtd/src/seama.c @@ -104,14 +104,13 @@ err_out: } int -mtd_fixseama(const char *mtd, size_t offset) +mtd_fixseama(const char *mtd, size_t offset, size_t data_size) { int fd; char *first_block; ssize_t res; size_t block_offset; size_t data_offset; - size_t data_size; struct seama_entity_header *shdr; if (quiet < 2) @@ -155,7 +154,8 @@ mtd_fixseama(const char *mtd, size_t offset) } data_offset = offset + sizeof(struct seama_entity_header) + ntohs(shdr->metasize); - data_size = mtdsize - data_offset; + if (!data_size) + data_size = mtdsize - data_offset; if (data_size > ntohl(shdr->size)) data_size = ntohl(shdr->size); if (seama_fix_md5(shdr, fd, data_offset, data_size)) |