diff --git a/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c b/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c index e9680e07bfa..5adba36f165 100644 --- a/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c +++ b/components/dfs/dfs_v1/filesystems/elmfat/dfs_elm.c @@ -491,11 +491,9 @@ int dfs_elm_close(struct dfs_file *file) RT_ASSERT(fd != RT_NULL); result = f_close(fd); - if (result == FR_OK) - { - /* release memory */ - rt_free(fd); - } + + /* release memory */ + rt_free(fd); } return elm_result_to_dfs(result); diff --git a/components/dfs/dfs_v1/src/dfs_file.c b/components/dfs/dfs_v1/src/dfs_file.c index e8594d8baea..3a7e626f208 100644 --- a/components/dfs/dfs_v1/src/dfs_file.c +++ b/components/dfs/dfs_v1/src/dfs_file.c @@ -309,13 +309,6 @@ int dfs_file_close(struct dfs_file *fd) result = vnode->fops->close(fd); } - /* close fd error, return */ - if (result < 0) - { - dfs_fm_unlock(); - return result; - } - if (vnode->ref_count == 1) { /* remove from hash */ diff --git a/components/dfs/dfs_v1/src/dfs_posix.c b/components/dfs/dfs_v1/src/dfs_posix.c index b0b7e3dd16b..07276a8c956 100644 --- a/components/dfs/dfs_v1/src/dfs_posix.c +++ b/components/dfs/dfs_v1/src/dfs_posix.c @@ -146,6 +146,7 @@ int close(int fd) } result = dfs_file_close(d); + fd_release(fd); if (result < 0) { @@ -154,8 +155,6 @@ int close(int fd) return -1; } - fd_release(fd); - return 0; } RTM_EXPORT(close);