summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cli_classic.c6
-rw-r--r--flashrom.c16
2 files changed, 10 insertions, 12 deletions
diff --git a/cli_classic.c b/cli_classic.c
index a0c2d64..a32d55b 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -338,8 +338,7 @@ int main(int argc, char *argv[])
if (logfile && check_filename(logfile, "log"))
cli_classic_abort_usage();
if (logfile && open_logfile(logfile))
- return 1;
- free(logfile);
+ cli_classic_abort_usage();
#endif /* !STANDALONE */
#if CONFIG_PRINT_WIKI == 1
@@ -522,8 +521,6 @@ int main(int argc, char *argv[])
*/
programmer_delay(100000);
ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it);
- /* Note: doit() already calls programmer_shutdown(). */
- goto out;
out_shutdown:
programmer_shutdown();
@@ -539,6 +536,7 @@ out:
free((char *)chip_to_probe); /* Silence! Freeing is not modifying contents. */
chip_to_probe = NULL;
#ifndef STANDALONE
+ free(logfile);
ret |= close_logfile();
#endif /* !STANDALONE */
return ret;
diff --git a/flashrom.c b/flashrom.c
index 23728f6..c20461a 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -413,6 +413,11 @@ int programmer_init(enum programmer prog, const char *param)
return ret;
}
+/** Calls registered shutdown functions and resets internal programmer-related variables.
+ * Calling it is safe even without previous initialization, but further interactions with programmer support
+ * require a call to programmer_init() (afterwards).
+ *
+ * @return The OR-ed result values of all shutdown functions (i.e. 0 on success). */
int programmer_shutdown(void)
{
int ret = 0;
@@ -1913,14 +1918,12 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it,
if (chip_safety_check(flash, force, read_it, write_it, erase_it, verify_it)) {
msg_cerr("Aborting.\n");
- ret = 1;
- goto out_nofree;
+ return 1;
}
if (normalize_romentries(flash)) {
msg_cerr("Requested regions can not be handled. Aborting.\n");
- ret = 1;
- goto out_nofree;
+ return 1;
}
/* Given the existence of read locks, we want to unlock for read,
@@ -1930,8 +1933,7 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it,
flash->chip->unlock(flash);
if (read_it) {
- ret = read_flash_to_file(flash, filename);
- goto out_nofree;
+ return read_flash_to_file(flash, filename);
}
oldcontents = malloc(size);
@@ -2048,7 +2050,5 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it,
out:
free(oldcontents);
free(newcontents);
-out_nofree:
- programmer_shutdown();
return ret;
}
OpenPOWER on IntegriCloud