[Bug 292282] NFS Shows Empty Filenames Under Linux Emulation

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 07 Feb 2026 22:15:28 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292282

--- Comment #13 from commit-hook@FreeBSD.org ---
A commit in branch main references this bug:

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

commit 110f2567cb51f1eeddbd5d9937000ad64f6dc746
Author:     Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2026-02-07 22:12:55 +0000
Commit:     Rick Macklem <rmacklem@FreeBSD.org>
CommitDate: 2026-02-07 22:12:55 +0000

    linux_file.c: Fix handling of NFS getdents() emulation

    Bugzilla PR#292282 reports a problem, where a Linux
    binary running in the Linuxulator gets bogus entries
    in a readdir()/getdents() reply when the directory is
    an NFS mount.

    This appears to be caused by the NFS client including
    entries with d_fileno == 0, which are always ignored by
    BSD, but are not ignored by Linux.

    This patch filters out the "d_fileno == 0" entries and
    the reporter of the bugzilla PR notes that it fixes the
    problem for him.

    It could be argued that the NFS client should filter out
    the "d_fileno == 0" entries, but the NFS client readdir
    code is "fragile" and any change to it runs a significant
    risk of causing regression type problems.

    As such, since the LInuxulator is already broken for this
    case, it seems safer to filter them out there.

    PR:     292282
    Tested by:      Jerry Williams <jwillia3@proton.me>
    Reviewed by:    markj
    MFC after:      2 weeks
    Differential Revision:  https://reviews.freebsd.org/D54679

 sys/compat/linux/linux_file.c | 178 ++++++++++++++++++++++++++----------------
 1 file changed, 110 insertions(+), 68 deletions(-)

-- 
You are receiving this mail because:
You are the assignee for the bug.