tools/mtd-utils: add two upstream patches
authorAlexandros C. Couloumbis <alex@ozo.com>
Fri, 15 Oct 2010 07:52:37 +0000 (07:52 +0000)
committerAlexandros C. Couloumbis <alex@ozo.com>
Fri, 15 Oct 2010 07:52:37 +0000 (07:52 +0000)
SVN-Revision: 23453

tools/mtd-utils/patches/000-upstream_jffs2reader.patch [new file with mode: 0644]
tools/mtd-utils/patches/000-upstream_nanddump.patch [new file with mode: 0644]

diff --git a/tools/mtd-utils/patches/000-upstream_jffs2reader.patch b/tools/mtd-utils/patches/000-upstream_jffs2reader.patch
new file mode 100644 (file)
index 0000000..bacef76
--- /dev/null
@@ -0,0 +1,165 @@
+From fec81abd9593fe11ba8577d38e4143e5708e3343 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sat, 2 Oct 2010 14:58:09 -0400
+Subject: [PATCH] jffs2reader: convert to common.h helpers
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
+---
+ jffs2reader.c |   71 +++++++++++++++++---------------------------------------
+ 1 files changed, 22 insertions(+), 49 deletions(-)
+
+diff --git a/jffs2reader.c b/jffs2reader.c
+index 0cdff19..d5a3d95 100644
+--- a/jffs2reader.c
++++ b/jffs2reader.c
+@@ -77,6 +77,7 @@ BUGS:
+ #include <sys/param.h>
+ #include <dirent.h>
+ #include <linux/jffs2.h>
++#include "common.h"
+ #define SCRATCH_SIZE (5*1024*1024)
+@@ -136,10 +137,8 @@ void putblock(char *b, size_t bsize, size_t * rsize,
+ {
+       uLongf dlen = n->dsize;
+-      if (n->isize > bsize || (n->offset + dlen) > bsize) {
+-              fprintf(stderr, "File does not fit into buffer!\n");
+-              exit(EXIT_FAILURE);
+-      }
++      if (n->isize > bsize || (n->offset + dlen) > bsize)
++              errmsg_die("File does not fit into buffer!");
+       if (*rsize < n->isize)
+               bzero(b + *rsize, n->isize - *rsize);
+@@ -163,8 +162,7 @@ void putblock(char *b, size_t bsize, size_t * rsize,
+                       /* [DYN]RUBIN support required! */
+               default:
+-                      fprintf(stderr, "Unsupported compression method!\n");
+-                      exit(EXIT_FAILURE);
++                      errmsg_die("Unsupported compression method!");
+       }
+       *rsize = n->isize;
+@@ -188,7 +186,7 @@ struct dir *putdir(struct dir *dd, struct jffs2_raw_dirent *n)
+       if (n->ino) {
+               if (dd == NULL) {
+-                      d = malloc(sizeof(struct dir));
++                      d = xmalloc(sizeof(struct dir));
+                       d->type = n->type;
+                       memcpy(d->name, n->name, n->nsize);
+                       d->nsize = n->nsize;
+@@ -208,7 +206,7 @@ struct dir *putdir(struct dir *dd, struct jffs2_raw_dirent *n)
+                       }
+                       if (dd->next == NULL) {
+-                              dd->next = malloc(sizeof(struct dir));
++                              dd->next = xmalloc(sizeof(struct dir));
+                               dd->next->type = n->type;
+                               memcpy(dd->next->name, n->name, n->nsize);
+                               dd->next->nsize = n->nsize;
+@@ -344,7 +342,7 @@ void printdir(char *o, size_t size, struct dir *d, char *path, int recurse)
+               }
+               ri = find_raw_inode(o, size, d->ino);
+               if (!ri) {
+-                      fprintf(stderr, "bug: raw_inode missing!\n");
++                      warnmsg("bug: raw_inode missing!");
+                       d = d->next;
+                       continue;
+               }
+@@ -379,11 +377,7 @@ void printdir(char *o, size_t size, struct dir *d, char *path, int recurse)
+               if (d->type == DT_DIR && recurse) {
+                       char *tmp;
+-                      tmp = malloc(BUFSIZ);
+-                      if (!tmp) {
+-                              fprintf(stderr, "memory exhausted\n");
+-                              exit(EXIT_FAILURE);
+-                      }
++                      tmp = xmalloc(BUFSIZ);
+                       sprintf(tmp, "%s/%s", path, d->name);
+                       lsdir(o, size, tmp, recurse);           /* Go recursive */
+                       free(tmp);
+@@ -817,11 +811,8 @@ void lsdir(char *o, size_t size, char *path, int recurse)
+       dd = resolvepath(o, size, 1, path, &ino);
+       if (ino == 0 ||
+-                      (dd == NULL && ino == 0) || (dd != NULL && dd->type != DT_DIR)) {
+-              fprintf(stderr, "%s: %s: No such file or directory\n",
+-                              PROGRAM_NAME, path);
+-              exit(EXIT_FAILURE);
+-      }
++                      (dd == NULL && ino == 0) || (dd != NULL && dd->type != DT_DIR))
++              errmsg_die("%s: No such file or directory", path);
+       d = collectdir(o, size, ino, d);
+       printdir(o, size, d, path, recurse);
+@@ -848,15 +839,11 @@ void catfile(char *o, size_t size, char *path, char *b, size_t bsize,
+       dd = resolvepath(o, size, 1, path, &ino);
+-      if (ino == 0) {
+-              fprintf(stderr, "%s: No such file or directory\n", path);
+-              exit(EXIT_FAILURE);
+-      }
++      if (ino == 0)
++              errmsg_die("%s: No such file or directory", path);
+-      if (dd == NULL || dd->type != DT_REG) {
+-              fprintf(stderr, "%s: Not a regular file\n", path);
+-              exit(EXIT_FAILURE);
+-      }
++      if (dd == NULL || dd->type != DT_REG)
++              errmsg_die("%s: Not a regular file", path);
+       ri = find_raw_inode(o, size, ino);
+       putblock(b, bsize, rsize, ri);
+@@ -896,36 +883,22 @@ int main(int argc, char **argv)
+       }
+       fd = open(argv[optind], O_RDONLY);
+-      if (fd == -1) {
+-              fprintf(stderr, "%s: %s\n", argv[optind], strerror(errno));
+-              exit(2);
+-      }
++      if (fd == -1)
++              sys_errmsg_die("%s", argv[optind]);
+-      if (fstat(fd, &st)) {
+-              fprintf(stderr, "%s: %s\n", argv[optind], strerror(errno));
+-              exit(3);
+-      }
++      if (fstat(fd, &st))
++              sys_errmsg_die("%s", argv[optind]);
+-      buf = malloc((size_t) st.st_size);
+-      if (buf == NULL) {
+-              fprintf(stderr, "%s: memory exhausted\n", argv[optind]);
+-              exit(4);
+-      }
++      buf = xmalloc((size_t) st.st_size);
+-      if (read(fd, buf, st.st_size) != (ssize_t) st.st_size) {
+-              fprintf(stderr, "%s: %s\n", argv[optind], strerror(errno));
+-              exit(5);
+-      }
++      if (read(fd, buf, st.st_size) != (ssize_t) st.st_size)
++              sys_errmsg_die("%s", argv[optind]);
+       if (dir)
+               lsdir(buf, st.st_size, dir, recurse);
+       if (file) {
+-              scratch = malloc(SCRATCH_SIZE);
+-              if (scratch == NULL) {
+-                      fprintf(stderr, "%s: memory exhausted\n", argv[optind]);
+-                      exit(6);
+-              }
++              scratch = xmalloc(SCRATCH_SIZE);
+               catfile(buf, st.st_size, file, scratch, SCRATCH_SIZE, &ssize);
+               free(scratch);
diff --git a/tools/mtd-utils/patches/000-upstream_nanddump.patch b/tools/mtd-utils/patches/000-upstream_nanddump.patch
new file mode 100644 (file)
index 0000000..e04f6d5
--- /dev/null
@@ -0,0 +1,28 @@
+From: Baruch Siach <baruch@tkos.co.il>
+Date: Mon, 11 Oct 2010 09:19:38 +0000 (+0200)
+Subject: nanddump: fix initialization of bad blocks oob data buffer
+X-Git-Url: http://git.infradead.org
+
+nanddump: fix initialization of bad blocks oob data buffer
+
+When dumping oob data of a bad block, initialize oobbuf with 0xff, instead of
+readbuf.  This avoids bogus oob data on output.
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+Acked-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
+---
+
+diff --git a/nanddump.c b/nanddump.c
+index 3589931..b7341a5 100644
+--- a/nanddump.c
++++ b/nanddump.c
+@@ -452,7 +452,7 @@ int main(int argc, char * const argv[])
+                       continue;
+               if (badblock) {
+-                      memset (readbuf, 0xff, meminfo.oobsize);
++                      memset(oobbuf, 0xff, meminfo.oobsize);
+               } else {
+                       /* Read OOB data and exit on failure */
+                       oob.start = ofs;