The branch main has been updated by markj:

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

commit 0d224af399a66f00a5b33e5512fc018062cabf1d
Author:     Mark Johnston <ma...@freebsd.org>
AuthorDate: 2025-05-27 13:29:14 +0000
Commit:     Mark Johnston <ma...@freebsd.org>
CommitDate: 2025-05-27 13:29:14 +0000

    namei: Fix cn_flags width in various places
    
    This truncation is mostly harmless today, but fix it anyway to avoid
    pain later down the road.
    
    Reviewed by:    olce, kib
    MFC after:      2 weeks
    Differential Revision:  https://reviews.freebsd.org/D50417
---
 sys/fs/cd9660/cd9660_lookup.c | 2 +-
 sys/fs/fuse/fuse_vnops.c      | 9 ++++-----
 sys/fs/p9fs/p9fs_vnops.c      | 2 +-
 sys/fs/smbfs/smbfs_vnops.c    | 2 +-
 sys/fs/unionfs/union_vnops.c  | 2 +-
 sys/kern/uipc_mqueue.c        | 3 ++-
 sys/kern/vfs_cache.c          | 2 +-
 7 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/sys/fs/cd9660/cd9660_lookup.c b/sys/fs/cd9660/cd9660_lookup.c
index 1adb7a18bcf1..75fcdc9152cd 100644
--- a/sys/fs/cd9660/cd9660_lookup.c
+++ b/sys/fs/cd9660/cd9660_lookup.c
@@ -125,7 +125,7 @@ cd9660_lookup(struct vop_cachedlookup_args *ap)
        char *name;
        struct vnode **vpp = ap->a_vpp;
        struct componentname *cnp = ap->a_cnp;
-       int flags = cnp->cn_flags;
+       uint64_t flags = cnp->cn_flags;
        int nameiop = cnp->cn_nameiop;
 
        ep2 = ep = NULL;
diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c
index 016b634c4fa0..83f527ec8ec0 100644
--- a/sys/fs/fuse/fuse_vnops.c
+++ b/sys/fs/fuse/fuse_vnops.c
@@ -1431,8 +1431,8 @@ fuse_vnop_lookup(struct vop_lookup_args *ap)
        struct timespec now;
 
        int nameiop = cnp->cn_nameiop;
-       int flags = cnp->cn_flags;
-       int islastcn = flags & ISLASTCN;
+       bool isdotdot = cnp->cn_flags & ISDOTDOT;
+       bool islastcn = cnp->cn_flags & ISLASTCN;
        struct mount *mp = vnode_mount(dvp);
        struct fuse_data *data = fuse_get_mpdata(mp);
        int default_permissions = data->dataflags & FSESS_DEFAULT_PERMISSIONS;
@@ -1465,8 +1465,7 @@ fuse_vnop_lookup(struct vop_lookup_args *ap)
                return err;
 
        is_dot = cnp->cn_namelen == 1 && *(cnp->cn_nameptr) == '.';
-       if ((flags & ISDOTDOT) && !(data->dataflags & FSESS_EXPORT_SUPPORT))
-       {
+       if (isdotdot && !(data->dataflags & FSESS_EXPORT_SUPPORT)) {
                if (!(VTOFUD(dvp)->flag & FN_PARENT_NID)) {
                        /*
                         * Since the file system doesn't support ".." lookups,
@@ -1580,7 +1579,7 @@ fuse_vnop_lookup(struct vop_lookup_args *ap)
                }
        } else {
                /* Entry was found */
-               if (flags & ISDOTDOT) {
+               if (isdotdot) {
                        struct fuse_lookup_alloc_arg flaa;
 
                        flaa.nid = nid;
diff --git a/sys/fs/p9fs/p9fs_vnops.c b/sys/fs/p9fs/p9fs_vnops.c
index cfb50c704019..56bf766ef801 100644
--- a/sys/fs/p9fs/p9fs_vnops.c
+++ b/sys/fs/p9fs/p9fs_vnops.c
@@ -222,9 +222,9 @@ p9fs_lookup(struct vop_lookup_args *ap)
        struct p9fs_session *vses;
        struct mount *mp; /* Get the mount point */
        struct p9_fid *dvfid, *newfid;
+       uint64_t flags;
        int error;
        struct vattr vattr;
-       int flags;
        char tmpchr;
 
        dvp = ap->a_dvp;
diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c
index 1e7dcafb1121..c30995508c00 100644
--- a/sys/fs/smbfs/smbfs_vnops.c
+++ b/sys/fs/smbfs/smbfs_vnops.c
@@ -1051,7 +1051,7 @@ smbfs_lookup(struct vop_lookup_args *ap)
        struct smbfattr fattr, *fap;
        struct smb_cred *scred;
        char *name = cnp->cn_nameptr;
-       int flags = cnp->cn_flags;
+       uint64_t flags = cnp->cn_flags;
        int nameiop = cnp->cn_nameiop;
        int nmlen = cnp->cn_namelen;
        int error, islastcn, isdot;
diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c
index a930e3921ab3..03130f0ca949 100644
--- a/sys/fs/unionfs/union_vnops.c
+++ b/sys/fs/unionfs/union_vnops.c
@@ -99,8 +99,8 @@ unionfs_lookup(struct vop_cachedlookup_args *ap)
        struct vattr    va;
        struct componentname *cnp;
        struct thread  *td;
+       uint64_t        cnflags;
        u_long          nameiop;
-       u_long          cnflags;
        int             lockflag;
        int             lkflags;
        int             error, uerror, lerror;
diff --git a/sys/kern/uipc_mqueue.c b/sys/kern/uipc_mqueue.c
index d647c7b991f4..6f2760635bad 100644
--- a/sys/kern/uipc_mqueue.c
+++ b/sys/kern/uipc_mqueue.c
@@ -851,7 +851,8 @@ mqfs_lookupx(struct vop_cachedlookup_args *ap)
        struct mqfs_node *pd;
        struct mqfs_node *pn;
        struct mqfs_info *mqfs;
-       int nameiop, flags, error, namelen;
+       uint64_t flags;
+       int nameiop, error, namelen;
        char *pname;
        struct thread *td;
 
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index af2d790b2e5b..4ab00698b311 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -4174,7 +4174,7 @@ SYSCTL_PROC(_vfs_cache_param, OID_AUTO, fast_lookup, 
CTLTYPE_INT|CTLFLAG_RW|CTLF
  */
 struct nameidata_outer {
        size_t ni_pathlen;
-       int cn_flags;
+       uint64_t cn_flags;
 };
 
 struct nameidata_saved {

Reply via email to