linux-stable/fs/fuse
ruanmeisi 5fd6f40d17 fuse: nlookup missing decrement in fuse_direntplus_link
commit b8bd342d50 upstream.

During our debugging of glusterfs, we found an Assertion failed error:
inode_lookup >= nlookup, which was caused by the nlookup value in the
kernel being greater than that in the FUSE file system.

The issue was introduced by fuse_direntplus_link, where in the function,
fuse_iget increments nlookup, and if d_splice_alias returns failure,
fuse_direntplus_link returns failure without decrementing nlookup
https://github.com/gluster/glusterfs/pull/4081

Signed-off-by: ruanmeisi <ruan.meisi@zte.com.cn>
Fixes: 0b05b18381 ("fuse: implement NFS-like readdirplus support")
Cc: <stable@vger.kernel.org> # v3.9
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-19 12:23:01 +02:00
..
acl.c vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
control.c fuse: Remove the control interface for virtio-fs 2022-08-17 14:24:11 +02:00
cuse.c cuse: simplify refcount 2021-04-14 10:40:58 +02:00
dax.c \n 2021-08-30 10:24:50 -07:00
dev.c fuse: fix pipe buffer lifetime for direct_io 2022-03-16 14:23:42 +01:00
dir.c fuse: revalidate: don't invalidate if interrupted 2023-07-27 08:46:54 +02:00
file.c fuse: fix deadlock between atomic O_TRUNC and page invalidation 2023-04-26 13:51:54 +02:00
fuse_i.h fuse: fix pipe buffer lifetime for direct_io 2022-03-16 14:23:42 +01:00
inode.c fuse: limit nsec 2022-08-17 14:22:56 +02:00
ioctl.c fuse: ioctl: translate ENOSYS in outarg 2023-07-27 08:46:54 +02:00
Kconfig virtiofs: implement dax read/write operations 2020-09-10 11:39:23 +02:00
Makefile fuse: move ioctl to separate source file 2021-04-12 15:04:30 +02:00
readdir.c fuse: nlookup missing decrement in fuse_direntplus_link 2023-09-19 12:23:01 +02:00
virtio_fs.c fuse: clean up fuse_mount destruction 2021-10-21 10:01:39 +02:00
xattr.c fuse: extend FUSE_SETXATTR request 2021-04-14 10:40:57 +02:00