The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=da84054f3a508ceab4474e4a002c87813963cc84
commit da84054f3a508ceab4474e4a002c87813963cc84 Author: Mark Johnston <ma...@freebsd.org> AuthorDate: 2025-07-15 00:38:21 +0000 Commit: Mark Johnston <ma...@freebsd.org> CommitDate: 2025-07-15 12:52:58 +0000 fdescfs: Set *eofflag in fdesc_readdir() Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D51319 --- sys/fs/fdescfs/fdesc_vnops.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c index 676ea5de12b8..58a22b8bdc50 100644 --- a/sys/fs/fdescfs/fdesc_vnops.c +++ b/sys/fs/fdescfs/fdesc_vnops.c @@ -547,6 +547,8 @@ fdesc_readdir(struct vop_readdir_args *ap) fmp = VFSTOFDESC(ap->a_vp->v_mount); if (ap->a_ncookies != NULL) *ap->a_ncookies = 0; + if (ap->a_eofflag != NULL) + *ap->a_eofflag = 0; off = (int)uio->uio_offset; if (off != uio->uio_offset || off < 0 || (u_int)off % UIO_MX != 0 || @@ -559,7 +561,12 @@ fdesc_readdir(struct vop_readdir_args *ap) fcnt = i - 2; /* The first two nodes are `.' and `..' */ FILEDESC_SLOCK(fdp); - while (i < fdp->fd_nfiles + 2 && uio->uio_resid >= UIO_MX) { + while (uio->uio_resid >= UIO_MX) { + if (i >= fdp->fd_nfiles + 2) { + if (ap->a_eofflag != NULL) + *ap->a_eofflag = 1; + break; + } bzero((caddr_t)dp, UIO_MX); switch (i) { case 0: /* `.' */