From: Rostislav Lisovy Date: Tue, 16 Sep 2014 12:38:52 +0000 (+0200) Subject: cmd_nand: Update (nand_info_t*)nand after arg_off(_size) call X-Git-Tag: v2014.10-rc3~29 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=93d3232d9607669f33a34d3a552b24e1d727413b;p=oweals%2Fu-boot.git cmd_nand: Update (nand_info_t*)nand after arg_off(_size) call The arg_off() and arg_off_size() update the 'current NAND device' variable (dev). This is then used when assigning the (nand_info_t*)nand value. Place the assignment after the arg_off(_size) calls to prevent using incorrect (nand_info_t*) nand value. Signed-off-by: Rostislav Lisovy --- diff --git a/common/cmd_nand.c b/common/cmd_nand.c index f9ced9d74c..7f962dcb25 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -647,8 +647,6 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) read = strncmp(cmd, "read", 4) == 0; /* 1 = read, 0 = write */ printf("\nNAND %s: ", read ? "read" : "write"); - nand = &nand_info[dev]; - s = strchr(cmd, '.'); if (s && !strcmp(s, ".raw")) { @@ -657,6 +655,8 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (arg_off(argv[3], &dev, &off, &size, &maxsize)) return 1; + nand = &nand_info[dev]; + if (argc > 4 && !str2long(argv[4], &pagecount)) { printf("'%s' is not a number\n", argv[4]); return 1; @@ -679,6 +679,8 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) rwsize = size; } + nand = &nand_info[dev]; + if (!s || !strcmp(s, ".jffs2") || !strcmp(s, ".e") || !strcmp(s, ".i")) { if (read)