From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Wed, 18 Jun 2014 08:15:30 +0200 Subject: [U-Boot] [PATCH] dfu: free entities when parsing fails In-Reply-To: <1402416401-14011-1-git-send-email-swarren@wwwdotorg.org> References: <1402416401-14011-1-git-send-email-swarren@wwwdotorg.org> Message-ID: <20140618081530.506fc92d@amdc2363> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Stephen, > From: Stephen Warren > > 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 > --- > common/cmd_dfu.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/common/cmd_dfu.c b/common/cmd_dfu.c > index a03538dabb37..433bddd5d2bd 100644 > --- a/common/cmd_dfu.c > +++ b/common/cmd_dfu.c > @@ -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, NULL, 10)); > if (ret) > - return ret; > + goto done; > > + ret = CMD_RET_SUCCESS; > if (argc > 4 && strcmp(argv[4], "list") == 0) { > dfu_show_entities(); > goto done; > @@ -61,7 +62,7 @@ done: > if (dfu_reset()) > run_command("reset", 0); > > - return CMD_RET_SUCCESS; > + return ret; > } > > U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu, Acked-by: Lukasz Majewski Test HW: Exynos4412 - Trats2 Tested-by: Lukasz Majewski -- Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group