Hi!

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.

diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 0a366d3..ba1b27f 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -854,13 +854,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"))


Signed-off-by: Manfred Schlaegl jun. <manfred.schla...@gmx.at>


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to