Nico Huber has submitted this change. ( https://review.coreboot.org/c/flashrom/+/52595 )
Change subject: mec1308.c: Extract params check into a function ......................................................................
mec1308.c: Extract params check into a function
This allows char *p to become a local variable in check_params, and it is allocated and freed within check_params function. Which means init function does not need char *p anymore, in particular does not need to free it - and this makes cleanup after failed init easier.
As a good side effect, init function becomes easier to read.
TEST=builds and ninja test from 51487 BUG=b:185191942
Change-Id: If5be7709e93233a2e7ea9133de50382d2524a55f Signed-off-by: Anastasia Klimchuk aklm@chromium.org Reviewed-on: https://review.coreboot.org/c/flashrom/+/52595 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Angel Pons th3fanbus@gmail.com Reviewed-by: Nico Huber nico.h@gmx.de --- M mec1308.c 1 file changed, 16 insertions(+), 5 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, but someone else must approve Angel Pons: Looks good to me, approved
diff --git a/mec1308.c b/mec1308.c index c4b34f5..682e7a9 100644 --- a/mec1308.c +++ b/mec1308.c @@ -406,13 +406,27 @@ .write_256 = default_spi_write_256, };
+static int check_params(void) +{ + int ret = 0; + char *p = NULL; + + p = extract_programmer_param("type"); + if (p && strcmp(p, "ec")) { + msg_pdbg("mec1308 only supports "ec" type devices\n"); + ret = 1; + } + + free(p); + return ret; +} + int mec1308_init(void) { uint16_t sio_port; uint8_t device_id; uint8_t tmp8; int ret = 0; - char *p = NULL; mec1308_data_t *ctx_data = NULL;
msg_pdbg("%s(): entered\n", __func__); @@ -423,9 +437,7 @@ return 1; }
- p = extract_programmer_param("type"); - if (p && strcmp(p, "ec")) { - msg_pdbg("mec1308 only supports "ec" type devices\n"); + if (check_params()) { ret = 1; goto mec1308_init_exit; } @@ -515,7 +527,6 @@ msg_pdbg("%s(): successfully initialized mec1308\n", __func__);
mec1308_init_exit: - free(p); if (ret) free(ctx_data); return ret;