aboutsummaryrefslogtreecommitdiffstats
path: root/package/system/mtd/src
diff options
context:
space:
mode:
authorZoltan Herpai <wigyori@uid0.hu>2016-06-28 10:08:04 +0200
committerGitHub <noreply@github.com>2016-06-28 10:08:04 +0200
commiteaeb4e48938014039899b0312e8e87da1073e348 (patch)
tree58519cde29158a1611b398c0e75b576125e5aa61 /package/system/mtd/src
parentdebeac0f833c2de3f15fe14135e365b6d8f54908 (diff)
parent3b0bfeac5cbb3df53755859299e9188981175b66 (diff)
downloadmaster-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/src')
-rw-r--r--package/system/mtd/src/mtd.c8
-rw-r--r--package/system/mtd/src/mtd.h2
-rw-r--r--package/system/mtd/src/seama.c6
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))