diff --git a/arch/xtensa/src/esp32s3/esp32s3_partition.c b/arch/xtensa/src/esp32s3/esp32s3_partition.c index 04a2307ecafad..50ce146e9c577 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_partition.c +++ b/arch/xtensa/src/esp32s3/esp32s3_partition.c @@ -769,6 +769,8 @@ int esp32s3_partition_init(void) encrypt = esp32s3_flash_encryption_enabled(); for (i = 0; i < num; i++) { + char *name; + if (info->magic != PARTITION_MAGIC) { break; @@ -842,8 +844,8 @@ int esp32s3_partition_init(void) mtd_priv->mtd.ioctl = esp32s3_part_ioctl; mtd_priv->mtd.read = esp32s3_part_read; mtd_priv->mtd.write = esp32s3_part_write; - mtd_priv->mtd.name = strdup(label); - if (!mtd_priv->mtd.name) + mtd_priv->mtd.name = name = strdup(label); + if (!name) { ferr("ERROR: Failed to allocate MTD name\n"); kmm_free(mtd_priv); @@ -857,7 +859,7 @@ int esp32s3_partition_init(void) if (!mtd_priv->part_mtd) { ferr("ERROR: Failed to create MTD partition\n"); - lib_free(mtd_priv->mtd.name); + lib_free(name); kmm_free(mtd_priv); ret = -ENOSPC; goto errout_with_mtd; @@ -867,7 +869,7 @@ int esp32s3_partition_init(void) if (ret < 0) { ferr("ERROR: Failed to register MTD @ %s\n", path); - lib_free(mtd_priv->mtd.name); + lib_free(name); kmm_free(mtd_priv); goto errout_with_mtd; }