git: c77cb022906d - stable/14 - fusefs: only search for FREAD fufh in readdir

Alan Somers <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.src
Message-ID <6a72abdf.3f678.796d8bc4__35361.6954454751$1785900019$gmane$org@gitrepo.freebsd.org>
The branch stable/14 has been updated by asomers:

URL: https://cgit.FreeBSD.org/src/commit/?id=c77cb022906de74fe69b218638b8776c1095b573

commit c77cb022906de74fe69b218638b8776c1095b573
Author:     CismonX <[email protected]>
AuthorDate: 2025-06-20 09:41:46 +0000
Commit:     Alan Somers <[email protected]>
CommitDate: 2026-08-05 02:36:08 +0000

    fusefs: only search for FREAD fufh in readdir
    
    The extra search for an FEXEC fufh shall be removed, since readdir
    is only supposed to be called on a directory opened with FREAD.  The
    sole exception is NFS, which will call VOP_READDIR with directories that
    aren't open at all.  fuse already has special code to handle that.
    
    Also remove the fuse_filehandle_get_dir() function, since it's not
    used anywhere else.
    
    Signed-off-by:  CismonX <[email protected]>
    Reviewed by:    asomers
    Pull Request:   https://github.com/freebsd/freebsd-src/pull/1729
    
    (cherry picked from commit 4179f1d9deed83977f159c8afea204293ef4c7d7)
---
 sys/fs/fuse/fuse_vnops.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c
index ad246049949d..5ebdc17048a0 100644
--- a/sys/fs/fuse/fuse_vnops.c
+++ b/sys/fs/fuse/fuse_vnops.c
@@ -262,16 +262,6 @@ fuse_extattr_check_cred(struct vnode *vp, int ns, struct ucred *cred,
 	}
 }
 
-/* Get a filehandle for a directory */
-static int
-fuse_filehandle_get_dir(struct vnode *vp, struct fuse_filehandle **fufhp,
-	struct ucred *cred, pid_t pid)
-{
-	if (fuse_filehandle_get(vp, FREAD, fufhp, cred, pid) == 0)
-		return 0;
-	return fuse_filehandle_get(vp, FEXEC, fufhp, cred, pid);
-}
-
 /* Send FUSE_FLUSH for this vnode */
 static int
 fuse_flush(struct vnode *vp, struct ucred *cred, pid_t pid, int fflag)
@@ -1940,7 +1930,7 @@ fuse_vnop_readdir(struct vop_readdir_args *ap)
 		return EINVAL;
 
 	tresid = uio->uio_resid;
-	err = fuse_filehandle_get_dir(vp, &fufh, cred, pid);
+	err = fuse_filehandle_get(vp, FREAD, &fufh, cred, pid);
 	if (err == EBADF && mp->mnt_flag & MNT_EXPORTED) {
 		KASSERT(!fsess_is_impl(mp, FUSE_OPENDIR),
 			("FUSE file systems that implement "
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.