diff --git a/src/kernel/core/fd.c b/src/kernel/core/fd.c index be0e1fef8d..21eb7279df 100644 --- a/src/kernel/core/fd.c +++ b/src/kernel/core/fd.c @@ -210,8 +210,8 @@ fd_dup2(int oldfd, int newfd, bool kernel) if (oldfd != newfd) { // Now do the work evicted = context->fds[newfd]; - context->fds[newfd] = context->fds[oldfd]; atomic_add(&context->fds[oldfd]->ref_count, 1); + context->fds[newfd] = context->fds[oldfd]; } mutex_unlock(&context->io_mutex); diff --git a/src/kernel/core/fs/vfs.c b/src/kernel/core/fs/vfs.c index f70d7206d6..db6e6ffd93 100755 --- a/src/kernel/core/fs/vfs.c +++ b/src/kernel/core/fs/vfs.c @@ -256,6 +256,9 @@ add_vnode_to_mount_list(struct vnode *v, struct fs_mount *mount) v->mount_next = mount->vnodes_head; v->mount_prev = NULL; + if (v->mount_next) + v->mount_next->mount_prev = v; + mount->vnodes_head = v; if (!mount->vnodes_tail) mount->vnodes_tail = v;