Tcl commands: Fix improper return status in flash commands and load_image. 31/2431/3
authorHarishKumar <harishpresent@gmail.com>
Tue, 9 Dec 2014 14:08:08 +0000 (19:38 +0530)
committerFreddie Chopin <freddie.chopin@gmail.com>
Fri, 4 Nov 2016 21:21:15 +0000 (21:21 +0000)
Nand write command :
nand_fileio_cleanup() always returns ERROR_OK. Due to this,
handle_nand_write_command() retuns ERROR_OK in the case
of nand failure. ERROR_FAIL should be returned.

Flash erase_sector command :
handle_flash_erase_command() always returns ERROR_OK even if
the erase functionality of actual driver implementation fails.
retval value should be returned.

Flash write_bank command :
handle_flash_write_bank_command() returns ERROR_OK even if
fileio_open() and fileio_read fails. ERROR_FAIL should be
returned.

Load_image command :
handle_load_image_command() retuns ERROR_OK even if image_open()
fails. ERROR_FAIL should be returned.
When the buffer is null, breaking the loop without setting
retval = ERROR_FAIL would cause load_image to return ERROR_OK.

Change-Id: Ice32f6036971ab5e8e4dd65edf54b394b001c80c
Signed-off-by: HarishKumar <harishpresent@gmail.com>
Reviewed-on: http://openocd.zylin.com/2431
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Tested-by: jenkins
src/flash/nand/tcl.c
src/flash/nor/tcl.c
src/target/target.c

index cbdeda5bcea90ec070ef1edb0fdd149f25e91146..d9738c55b272e9e7959edf3d146c701fb4fe14f4 100644 (file)
@@ -254,7 +254,8 @@ COMMAND_HANDLER(handle_nand_write_command)
                int bytes_read = nand_fileio_read(nand, &s);
                if (bytes_read <= 0) {
                        command_print(CMD_CTX, "error while reading file");
-                       return nand_fileio_cleanup(&s);
+                       nand_fileio_cleanup(&s);
+                       return ERROR_FAIL;
                }
                s.size -= bytes_read;
 
@@ -264,7 +265,8 @@ COMMAND_HANDLER(handle_nand_write_command)
                        command_print(CMD_CTX, "failed writing file %s "
                                "to NAND flash %s at offset 0x%8.8" PRIx32,
                                CMD_ARGV[1], CMD_ARGV[0], s.address);
-                       return nand_fileio_cleanup(&s);
+                       nand_fileio_cleanup(&s);
+                       return retval;
                }
                s.address += s.page_size;
        }
index d62fa7462e43bd9b70914754ae498a4d3c6a9cbf..69368229d223a25795be681ec8369ce752f6cdf5 100644 (file)
@@ -341,7 +341,7 @@ COMMAND_HANDLER(handle_flash_erase_command)
                        "in %fs", first, last, p->bank_number, duration_elapsed(&bench));
        }
 
-       return ERROR_OK;
+       return retval;
 }
 
 COMMAND_HANDLER(handle_flash_protect_command)
@@ -600,7 +600,7 @@ COMMAND_HANDLER(handle_flash_write_bank_command)
        COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], offset);
 
        if (fileio_open(&fileio, CMD_ARGV[1], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
-               return ERROR_OK;
+               return ERROR_FAIL;
 
        size_t filesize;
        retval = fileio_size(fileio, &filesize);
@@ -619,7 +619,7 @@ COMMAND_HANDLER(handle_flash_write_bank_command)
        if (fileio_read(fileio, filesize, buffer, &buf_cnt) != ERROR_OK) {
                free(buffer);
                fileio_close(fileio);
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        retval = flash_driver_write(p, buffer, offset, buf_cnt);
index 9fc9d20fcf5b8921e3526d6ec2b0458c56dff43f..c23590e5989c50977ce99b5a448e567f7784223b 100644 (file)
@@ -3166,7 +3166,7 @@ COMMAND_HANDLER(handle_load_image_command)
        duration_start(&bench);
 
        if (image_open(&image, CMD_ARGV[0], (CMD_ARGC >= 3) ? CMD_ARGV[2] : NULL) != ERROR_OK)
-               return ERROR_OK;
+               return ERROR_FAIL;
 
        image_size = 0x0;
        retval = ERROR_OK;
@@ -3176,6 +3176,7 @@ COMMAND_HANDLER(handle_load_image_command)
                        command_print(CMD_CTX,
                                                  "error allocating buffer for section (%d bytes)",
                                                  (int)(image.sections[i].size));
+                       retval = ERROR_FAIL;
                        break;
                }
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)