env: mtd: fix usability with NAND flashes
authorWeijie Gao <weijie.gao@mediatek.com>
Tue, 6 May 2025 07:15:01 +0000 (15:15 +0800)
committerTom Rini <trini@konsulko.com>
Fri, 23 May 2025 14:00:51 +0000 (08:00 -0600)
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 should be set correctly to write_size

Fixes: 03fb08d4aef (env: Introduce support for MTD)
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
Reviewed-by: Christian Marangi <ansuelsmth@gmail.com>
env/Kconfig
env/mtd.c

index 9f5ec44..d7a7e81 100644 (file)
@@ -389,7 +389,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
index 721faeb..d7ec30e 100644 (file)
--- 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...");