dfu: free entities when parsing fails
When dfu_init_env_entities() fails part-way through, some entities may have been added to dfu_list. These are only removed by dfu_free_entities(). If that function isn't called, those stale entities will still exist the next time dfu_init_env_entities() is called, leading to confusion. Fix do_dfu() to ensure that dfu_free_entities() is always called, to avoid this confusion. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Lukasz Majewski <l.majewski@samsung.com> Tested-by: Lukasz Majewski <l.majewski@samsung.com>
This commit is contained in:
parent
08ebd467c8
commit
afb8e71cae
|
@ -27,8 +27,9 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
ret = dfu_init_env_entities(interface, simple_strtoul(devstring,
|
ret = dfu_init_env_entities(interface, simple_strtoul(devstring,
|
||||||
NULL, 10));
|
NULL, 10));
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
goto done;
|
||||||
|
|
||||||
|
ret = CMD_RET_SUCCESS;
|
||||||
if (argc > 4 && strcmp(argv[4], "list") == 0) {
|
if (argc > 4 && strcmp(argv[4], "list") == 0) {
|
||||||
dfu_show_entities();
|
dfu_show_entities();
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -61,7 +62,7 @@ done:
|
||||||
if (dfu_reset())
|
if (dfu_reset())
|
||||||
run_command("reset", 0);
|
run_command("reset", 0);
|
||||||
|
|
||||||
return CMD_RET_SUCCESS;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu,
|
U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu,
|
||||||
|
|
Loading…
Reference in New Issue