diff --git a/components/dfs/Kconfig b/components/dfs/Kconfig index 23799d1b44e..9f1c050cee5 100644 --- a/components/dfs/Kconfig +++ b/components/dfs/Kconfig @@ -152,9 +152,29 @@ endif depends on RT_DFS_ELM_REENTRANT config RT_DFS_ELM_USE_EXFAT - bool "Enable RT_DFS_ELM_USE_EXFAT" + bool "Enable exFAT filesystem support" default n depends on RT_DFS_ELM_USE_LFN >= 1 + help + exFAT (Extended File Allocation Table) is a file system + designed for large-capacity storage devices. + + Key features and recommendations: + - Target scenarios: Primarily used for storage media requiring + support for very large files (>4GB) or large partitions + (>32GB), such as high-capacity SD cards or USB drives. + + - Resource cost: Enabling exFAT support will significantly + increase the code size (ROM footprint) of the file system. + + - Recommendation: + For small-capacity storage devices (e.g., SPI Flash or + eMMC under 32GB), the standard FAT16 or FAT32 file + systems are perfectly adequate. It is strongly recommended + to keep this option disabled unless you absolutely need to + handle large-capacity storage, in order to conserve + valuable code space. + endmenu endif diff --git a/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c b/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c index 43c72c66750..8b250054234 100644 --- a/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c +++ b/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c @@ -15,6 +15,7 @@ * 2017-02-13 Hichard Update Fatfs version to 0.12b, support exFAT. * 2017-04-11 Bernard fix the st_blksize issue. * 2017-05-26 Urey fix f_mount error when mount more fats + * 2025-10-29 wdfk-prog Fixed a memory leak in dfs_elm_close */ #include @@ -468,10 +469,7 @@ int dfs_elm_close(struct dfs_file *file) FRESULT result; RT_ASSERT(file->vnode->ref_count > 0); - if (file->vnode->ref_count > 1) - { - return 0; - } + RT_ASSERT(file->data != RT_NULL); result = FR_OK; if (file->vnode->type == FT_DIRECTORY) {