diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2008-08-11 09:50:54 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2008-08-13 16:41:22 +0200 |
commit | da4d33969e23589191dda3c4c7041a84ba42a583 (patch) | |
tree | 219b25790be07b6ceba752b95dfc0341c030ec87 /commands/flash.c | |
parent | 2db67353f3de3edffd44cd0a45097137ab63376b (diff) | |
download | barebox-da4d33969e23589191dda3c4c7041a84ba42a583.tar.gz barebox-da4d33969e23589191dda3c4c7041a84ba42a583.tar.xz |
CFI Flash driver: Fix error path
We forgot to close the file when parse_area_spec() failed.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/flash.c')
-rw-r--r-- | commands/flash.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/commands/flash.c b/commands/flash.c index 8dbfeeb8c4..5876fc7d55 100644 --- a/commands/flash.c +++ b/commands/flash.c @@ -43,6 +43,7 @@ static int do_flerase (cmd_tbl_t *cmdtp, int argc, char *argv[]) char *filename = NULL; struct stat s; unsigned long start = 0, size = ~0; + int ret = 0; if (argc == 1) { u_boot_cmd_usage(cmdtp); @@ -69,20 +70,20 @@ static int do_flerase (cmd_tbl_t *cmdtp, int argc, char *argv[]) return 1; } - if (argc == 3) - if (parse_area_spec(argv[2], &start, &size)) { - printf("could not parse: %s\n", argv[optind]); - return 1; - } + if (argc == 3 && parse_area_spec(argv[2], &start, &size)) { + printf("could not parse: %s\n", argv[optind]); + ret = 1; + goto out; + } - if(erase(fd, size, start)) { + if (erase(fd, size, start)) { perror("erase"); - return 1; + ret = 1; } - +out: close(fd); - return 0; + return ret; } static const __maybe_unused char cmd_erase_help[] = |