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: /* `.' */

Reply via email to