Loading fs/fuse/file.c +4 −5 Original line number Diff line number Diff line Loading @@ -86,15 +86,14 @@ static struct fuse_file *fuse_file_get(struct fuse_file *ff) static void fuse_release_end(struct fuse_conn *fc, struct fuse_req *req) { dput(req->misc.release.dentry); mntput(req->misc.release.vfsmount); path_put(&req->misc.release.path); } static void fuse_file_put(struct fuse_file *ff) { if (atomic_dec_and_test(&ff->count)) { struct fuse_req *req = ff->reserved_req; struct inode *inode = req->misc.release.dentry->d_inode; struct inode *inode = req->misc.release.path.dentry->d_inode; struct fuse_conn *fc = get_fuse_conn(inode); req->end = fuse_release_end; fuse_request_send_background(fc, req); Loading Loading @@ -177,8 +176,8 @@ int fuse_release_common(struct inode *inode, struct file *file, int isdir) isdir ? FUSE_RELEASEDIR : FUSE_RELEASE); /* Hold vfsmount and dentry until release is finished */ req->misc.release.vfsmount = mntget(file->f_path.mnt); req->misc.release.dentry = dget(file->f_path.dentry); path_get(&file->f_path); req->misc.release.path = file->f_path; spin_lock(&fc->lock); list_del(&ff->write_entry); Loading fs/fuse/fuse_i.h +1 −2 Original line number Diff line number Diff line Loading @@ -248,8 +248,7 @@ struct fuse_req { struct fuse_forget_in forget_in; struct { struct fuse_release_in in; struct vfsmount *vfsmount; struct dentry *dentry; struct path path; } release; struct fuse_init_in init_in; struct fuse_init_out init_out; Loading Loading
fs/fuse/file.c +4 −5 Original line number Diff line number Diff line Loading @@ -86,15 +86,14 @@ static struct fuse_file *fuse_file_get(struct fuse_file *ff) static void fuse_release_end(struct fuse_conn *fc, struct fuse_req *req) { dput(req->misc.release.dentry); mntput(req->misc.release.vfsmount); path_put(&req->misc.release.path); } static void fuse_file_put(struct fuse_file *ff) { if (atomic_dec_and_test(&ff->count)) { struct fuse_req *req = ff->reserved_req; struct inode *inode = req->misc.release.dentry->d_inode; struct inode *inode = req->misc.release.path.dentry->d_inode; struct fuse_conn *fc = get_fuse_conn(inode); req->end = fuse_release_end; fuse_request_send_background(fc, req); Loading Loading @@ -177,8 +176,8 @@ int fuse_release_common(struct inode *inode, struct file *file, int isdir) isdir ? FUSE_RELEASEDIR : FUSE_RELEASE); /* Hold vfsmount and dentry until release is finished */ req->misc.release.vfsmount = mntget(file->f_path.mnt); req->misc.release.dentry = dget(file->f_path.dentry); path_get(&file->f_path); req->misc.release.path = file->f_path; spin_lock(&fc->lock); list_del(&ff->write_entry); Loading
fs/fuse/fuse_i.h +1 −2 Original line number Diff line number Diff line Loading @@ -248,8 +248,7 @@ struct fuse_req { struct fuse_forget_in forget_in; struct { struct fuse_release_in in; struct vfsmount *vfsmount; struct dentry *dentry; struct path path; } release; struct fuse_init_in init_in; struct fuse_init_out init_out; Loading