Acknowledged On Thu, Jul 2, 2026 at 1:11 PM Liu Kui <[email protected]> wrote: > > The vStorage open in close_wait branch runs after fuse_file_io_open() has > taken the inode io-mode reference. However when fuse_finish_open() returns > error, its caller tears the file down via fuse_sync_release(), which doesn't > call fuse_file_io_release() (ra->inode is NULL), leaking iocachectr and > triggering WARN_ON(fi->iocachectr != 0) in fuse_evict_inode(). > > Fix the leak by calling fuse_file_io_release() on the failure path. > > https://virtuozzo.atlassian.net/browse/VSTOR-136977 > > Signed-off-by: Liu Kui <[email protected]> > --- > fs/fuse/file.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > index 2855986c987d..f77c784b938f 100644 > --- a/fs/fuse/file.c > +++ b/fs/fuse/file.c > @@ -353,6 +353,15 @@ int fuse_finish_open(struct inode *inode, struct file > *file) > > if (!err) > err = fuse_open_close_wait(inode, file); > + > + /* > + * fuse_file_io_open() has already taken the inode io-mode > reference > + * (fi->iocachectr). On failure the caller tears the file > down via > + * fuse_sync_release(), which does not call > fuse_file_io_release() > + * because ra->inode is NULL for synchronous release. > + */ > + if (err) > + fuse_file_io_release(ff, inode); > } > > return err; > -- > 2.50.1 (Apple Git-155)
_______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
