[PATCH] env: mtd: fix usability with NAND flashes

Weijie Gao weijie.gao at mediatek.com
Tue May 6 09:15:01 CEST 2025


1. As this is for MTD-based devices, the Kconfig dependency should be MTD
   instead of only spi-nor flashes
2. Initialize saved_buf to avoid crash on free()
3. Remaining size shoule be set correctly to write_size

Fixes: 03fb08d4aef (env: Introduce support for MTD)
Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
---
 env/Kconfig | 2 +-
 env/mtd.c   | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/env/Kconfig b/env/Kconfig
index 1e876c6fa85..ce869a24d46 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -404,7 +404,7 @@ config ENV_IS_IN_SPI_FLASH
 
 config ENV_IS_IN_MTD
 	bool "Environment is in MTD flash"
-	depends on !CHAIN_OF_TRUST && (SPI_FLASH || DM_SPI_FLASH)
+	depends on !CHAIN_OF_TRUST && MTD
 	default y if ARCH_AIROHA
 	help
 	  Define this if you have a MTD Flash memory device which you
diff --git a/env/mtd.c b/env/mtd.c
index 721faebd8f2..d7ec30e183a 100644
--- a/env/mtd.c
+++ b/env/mtd.c
@@ -32,7 +32,7 @@ static int setup_mtd_device(struct mtd_info **mtd_env)
 
 static int env_mtd_save(void)
 {
-	char *saved_buf, *write_buf, *tmp;
+	char *saved_buf = NULL, *write_buf, *tmp;
 	struct erase_info ei = { };
 	struct mtd_info *mtd_env;
 	u32 sect_size, sect_num;
@@ -105,7 +105,7 @@ static int env_mtd_save(void)
 	}
 
 	offset = CONFIG_ENV_OFFSET;
-	remaining = sect_size;
+	remaining = write_size;
 	tmp = write_buf;
 
 	puts("Writing to MTD...");
-- 
2.34.1



More information about the U-Boot mailing list