From d465ed93f600e6525fd60a18f7d3290c33df3132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20M=C3=BAdry?= Date: Wed, 29 Nov 2023 12:39:15 +0100 Subject: [PATCH] fix: esp_vfs_fat_sdcard_format workbuf memory leak --- components/fatfs/vfs/vfs_fat_sdmmc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/components/fatfs/vfs/vfs_fat_sdmmc.c b/components/fatfs/vfs/vfs_fat_sdmmc.c index 3462f9a740..f62d6e7c5c 100644 --- a/components/fatfs/vfs/vfs_fat_sdmmc.c +++ b/components/fatfs/vfs/vfs_fat_sdmmc.c @@ -464,17 +464,20 @@ esp_err_t esp_vfs_fat_sdcard_format(const char *base_path, sdmmc_card_t *card) return ESP_ERR_INVALID_STATE; } + //unmount + char drv[3] = {(char)('0' + pdrv), ':', 0}; + FRESULT res = f_mount(0, drv, 0); + if (res != FR_OK) { + ESP_LOGE(TAG, "f_mount unmount failed (%d)", res); + return ESP_FAIL; + } + const size_t workbuf_size = 4096; void *workbuf = ff_memalloc(workbuf_size); if (workbuf == NULL) { return ESP_ERR_NO_MEM; } - //unmount - char drv[3] = {(char)('0' + pdrv), ':', 0}; - FRESULT res = f_mount(0, drv, 0); - ESP_RETURN_ON_FALSE(res != FR_INVALID_DRIVE, ESP_FAIL, TAG, "f_mount unmount failed (%d) - the logical drive number is invalid", res); - //format uint32_t id = FF_VOLUMES; bool found = s_get_context_id_by_card(card, &id);