U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] env: mmc: Add missing eMMC bootpart restoration to env erase
@ 2021-10-06 16:29 Marek Vasut
  2021-10-06 16:29 ` [PATCH 2/2] env: mmc: Add support for redundant env in both eMMC boot partitions Marek Vasut
  2021-10-26 13:34 ` [PATCH 1/2] env: mmc: Add missing eMMC bootpart restoration to env erase Tom Rini
  0 siblings, 2 replies; 4+ messages in thread
From: Marek Vasut @ 2021-10-06 16:29 UTC (permalink / raw)
  To: u-boot; +Cc: Marek Vasut, Fabio Estevam, Jaehoon Chung, Peng Fan,
	Stefano Babic

If the environment is stored in eMMC hardware boot partition, the environment
driver first stores the currently selected eMMC boot partition, then does the
requested operation, and then restores the original boot partition settings.
In case the environment operation fails, the boot partition settings are also
restored.

The 'env erase' implementation in the MMC environment driver lacks the path
which restores the boot partition. This could lead to various failure modes,
like the system boots the wrong copy of bootloader etc. Fix this by filling
in the missing restoration path.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Jaehoon Chung <jh80.chung@samsung.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Stefano Babic <sbabic@denx.de>
---
 env/mmc.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/env/mmc.c b/env/mmc.c
index c4cb1639914..e111d8e5881 100644
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -263,20 +263,26 @@ static int env_mmc_erase(void)
 		return 1;
 	}
 
-	if (mmc_get_env_addr(mmc, copy, &offset))
-		return CMD_RET_FAILURE;
+	if (mmc_get_env_addr(mmc, copy, &offset)) {
+		ret = CMD_RET_FAILURE;
+		goto fini;
+	}
 
 	ret = erase_env(mmc, CONFIG_ENV_SIZE, offset);
 
 #ifdef CONFIG_ENV_OFFSET_REDUND
 	copy = 1;
 
-	if (mmc_get_env_addr(mmc, copy, &offset))
-		return CMD_RET_FAILURE;
+	if (mmc_get_env_addr(mmc, copy, &offset)) {
+		ret = CMD_RET_FAILURE;
+		goto fini;
+	}
 
 	ret |= erase_env(mmc, CONFIG_ENV_SIZE, offset);
 #endif
 
+fini:
+	fini_mmc_for_env(mmc);
 	return ret;
 }
 #endif /* CONFIG_CMD_SAVEENV && !CONFIG_SPL_BUILD */
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-10-26 13:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-06 16:29 [PATCH 1/2] env: mmc: Add missing eMMC bootpart restoration to env erase Marek Vasut
2021-10-06 16:29 ` [PATCH 2/2] env: mmc: Add support for redundant env in both eMMC boot partitions Marek Vasut
2021-10-15 16:42   ` Tom Rini
2021-10-26 13:34 ` [PATCH 1/2] env: mmc: Add missing eMMC bootpart restoration to env erase Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox