diff --git a/fs/vfs/vfs_syscalls.c b/fs/vfs/vfs_syscalls.c index c1e622f6ef9ff90cc2e4d9fff91450eb21a5909b..8b70a45f52101175e04467d8adbb876134fe9329 100755 --- a/fs/vfs/vfs_syscalls.c +++ b/fs/vfs/vfs_syscalls.c @@ -119,15 +119,15 @@ sys_open(char *path, int flags, mode_t mode, struct file *fp) } } + finit(fp, flags, DTYPE_VNODE, NULL, &vfs_ops); + fp->f_vnode = vp; + /* Request to file system */ if ((error = VOP_OPEN(vp, flags)) != 0) { vput(vp); return error; } - finit(fp, flags, DTYPE_VNODE, NULL, &vfs_ops); - fp->f_vnode = vp; - vn_unlock(vp); return 0; }