diff options
| author | zmq810150896 <[email protected]> | 2023-10-12 08:22:46 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-10-12 08:22:46 +0800 |
| commit | e6eddfa71127699d613147bba44279bfe7c61196 (patch) | |
| tree | 2e5062ea17ee739c923708073d95e57abb74bb1f | |
| parent | 19bfdac891dbb70d475a64ae118ecb83459f4a50 (diff) | |
Fix the problem that when dfs_v2 transmits fd, dentry or vnode does not exist (#8089)
| -rw-r--r-- | components/lwp/lwp_ipc.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/components/lwp/lwp_ipc.c b/components/lwp/lwp_ipc.c index 0b36306057..8410bc2cac 100644 --- a/components/lwp/lwp_ipc.c +++ b/components/lwp/lwp_ipc.c @@ -407,19 +407,26 @@ static int _ipc_msg_fd_new(void *file) return -1; } + d->vnode = df->vnode; + d->flags = df->flags; + d->data = df->data; + d->magic = df->magic; + #ifdef RT_USING_DFS_V2 d->fops = df->fops; d->mode = df->mode; d->dentry = df->dentry; - d->dentry->ref_count ++; + if (d->dentry) + rt_atomic_add(&(d->dentry->ref_count), 1); + + if (d->vnode) + rt_atomic_add(&(d->vnode->ref_count), 1); +#else + if (d->vnode) + d->vnode->ref_count ++; #endif - d->vnode = df->vnode; - d->flags = df->flags; - d->data = df->data; - d->magic = df->magic; - d->vnode->ref_count ++; return fd; } |
