The branch main has been updated by markj:

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

commit b4f610a6851d9dcb54ada397c5dc93ab2e8559e1
Author:     Mark Johnston <ma...@freebsd.org>
AuthorDate: 2025-07-23 17:33:11 +0000
Commit:     Mark Johnston <ma...@freebsd.org>
CommitDate: 2025-07-23 17:34:13 +0000

    vfs: Handle zero-length directory reads
    
    Avoid a false-positive assertion in VOP_READDIR in that case.
    
    Reported by:    syzbot+4689a0b0d5918a8e3...@syzkaller.appspotmail.com
    Fixes:  77b273d8f5f4 ("vfs: Assert that VOP_READDIR sets *eofflag properly")
---
 sys/sys/vnode.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index c4944965a484..a416fddcddc3 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -1023,7 +1023,8 @@ void      vop_rename_fail(struct vop_rename_args *ap);
 #define        vop_readdir_post_assert(ap, ret)                                
\
        nresid = (ap)->a_uio->uio_resid;                                \
        if ((ret) == 0 && (ap)->a_eofflag != NULL) {                    \
-               VNASSERT(nresid != oresid || *(ap)->a_eofflag == 1,     \
+               VNASSERT(oresid == 0 || nresid != oresid ||             \
+                   *(ap)->a_eofflag == 1,                              \
                    (ap)->a_vp, ("VOP_READDIR: eofflag not set"));      \
        }
 #else

Reply via email to