summaryrefslogtreecommitdiffstats
path: root/commands/flash.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2008-08-11 09:50:54 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2008-08-13 16:41:22 +0200
commitda4d33969e23589191dda3c4c7041a84ba42a583 (patch)
tree219b25790be07b6ceba752b95dfc0341c030ec87 /commands/flash.c
parent2db67353f3de3edffd44cd0a45097137ab63376b (diff)
downloadbarebox-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.c19
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[] =