summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorgoldengrandpa <[email protected]>2023-04-26 08:47:21 +0800
committerGitHub <[email protected]>2023-04-26 08:47:21 +0800
commitefbdeb25ee7f10f47f7dfcac62b5a5c6a544aecc (patch)
tree580767e3810c247e89fe31894132c21e2848cde9 /components
parent62dcc5053089070a5e632b353b26e06b7f50470b (diff)
[dfs]释放fd_slot之前将子节点释放避免内存泄漏 (#7378)
Diffstat (limited to 'components')
-rw-r--r--components/dfs/dfs_v1/src/dfs.c5
-rw-r--r--components/dfs/dfs_v2/src/dfs.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/components/dfs/dfs_v1/src/dfs.c b/components/dfs/dfs_v1/src/dfs.c
index ecab062d7a..5487b1c012 100644
--- a/components/dfs/dfs_v1/src/dfs.c
+++ b/components/dfs/dfs_v1/src/dfs.c
@@ -359,6 +359,11 @@ void fdt_fd_release(struct dfs_fdtable* fdt, int fd)
if (vnode)
{
vnode->ref_count--;
+ if(vnode->ref_count == 0)
+ {
+ rt_free(vnode);
+ fd_slot->vnode = RT_NULL;
+ }
}
rt_free(fd_slot);
}
diff --git a/components/dfs/dfs_v2/src/dfs.c b/components/dfs/dfs_v2/src/dfs.c
index ecab062d7a..5487b1c012 100644
--- a/components/dfs/dfs_v2/src/dfs.c
+++ b/components/dfs/dfs_v2/src/dfs.c
@@ -359,6 +359,11 @@ void fdt_fd_release(struct dfs_fdtable* fdt, int fd)
if (vnode)
{
vnode->ref_count--;
+ if(vnode->ref_count == 0)
+ {
+ rt_free(vnode);
+ fd_slot->vnode = RT_NULL;
+ }
}
rt_free(fd_slot);
}