]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
nand read.jffs2 (nand_legacy) in common/cmd_nand.c
authorSchlaegl Manfred jun <manfred.schlaegl@gmx.at>
Tue, 20 Jan 2009 15:57:55 +0000 (16:57 +0100)
committerScott Wood <scottwood@freescale.com>
Fri, 23 Jan 2009 16:32:52 +0000 (10:32 -0600)
Error with CONFIG_NAND_LEGACY in common/cmd_nand.c:
With current code "nand read.jffs2s" (read and skip bad blocks) is always interpreted as
"nand read.jffs2" (read and fill bad blocks with 0xff). This is because ".jffs2" is
tested before ".jffs2s" and only the first two characters are compared.

Correction:
Test for ".jffs2s" first and compare the first 7 characters.

Signed-off-by: Scott Wood <scottwood@freescale.com>
common/cmd_nand.c

index a240c37b76c67bccaa9dd0bae54e53efa4b9229c..3d434e8a709d235bccf5f617b806a642cdd2c902 100644 (file)
@@ -856,13 +856,12 @@ int do_nand (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
                                                              (u_char *) addr);
                                }
                                return ret;
-                       } else if (cmdtail && !strncmp (cmdtail, ".jffs2", 2))
-                               cmd |= NANDRW_JFFS2;    /* skip bad blocks */
-                       else if (cmdtail && !strncmp (cmdtail, ".jffs2s", 2)) {
+                       } else if (cmdtail && !strncmp (cmdtail, ".jffs2s", 7)) {
                                cmd |= NANDRW_JFFS2;    /* skip bad blocks (on read too) */
                                if (cmd & NANDRW_READ)
                                        cmd |= NANDRW_JFFS2_SKIP;       /* skip bad blocks (on read too) */
-                       }
+                       } else if (cmdtail && !strncmp (cmdtail, ".jffs2", 2))
+                               cmd |= NANDRW_JFFS2;    /* skip bad blocks */
 #ifdef SXNI855T
                        /* need ".e" same as ".j" for compatibility with older units */
                        else if (cmdtail && !strcmp (cmdtail, ".e"))