Yep. You can commit it or I can?
(You can put reviewed by me if you choose to commit it.)

Thanks, rick

On Thu, Jul 10, 2025 at 5:27 AM Dag-Erling Smørgrav <d...@freebsd.org> wrote:
>
> CAUTION: This email originated from outside of the University of Guelph. Do 
> not click links or open attachments unless you recognize the sender and know 
> the content is safe. If in doubt, forward suspicious emails to 
> ith...@uoguelph.ca.
>
> Rick Macklem <rmack...@freebsd.org> writes:
> > diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
> > index 0049d7edca33..fbfcdafaa06b 100644
> > --- a/sys/fs/nfsclient/nfs_clvnops.c
> > +++ b/sys/fs/nfsclient/nfs_clvnops.c
> > [...]
> > @@ -1092,7 +1100,8 @@ nfs_setattr(struct vop_setattr_args *ap)
> >           vap->va_gid != (gid_t)VNOVAL || vap->va_atime.tv_sec != VNOVAL ||
> >           vap->va_mtime.tv_sec != VNOVAL ||
> >           vap->va_birthtime.tv_sec != VNOVAL ||
> > -         vap->va_mode != (mode_t)VNOVAL) &&
> > +         vap->va_mode != (mode_t)VNOVAL ||
> > +         vap->va_flags != (u_long)VNOVAL) &&
> >           (vp->v_mount->mnt_flag & MNT_RDONLY))
> >               return (EROFS);
> >       if (vap->va_size != VNOVAL) {
>
> vap->va_flags was already checked (in the line just before the first
> line of context), albeit without a cast.  Coverity erroneously claims
> that this causes the entire expression to always be true, because it
> thinks VNOVAL and (u_long)VNOVAL are two different values.  That's not
> the case, but you probably still want this:
>
> diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
> index fbfcdafaa06b..fa451887e73e 100644
> --- a/sys/fs/nfsclient/nfs_clvnops.c
> +++ b/sys/fs/nfsclient/nfs_clvnops.c
> @@ -1096,12 +1096,11 @@ nfs_setattr(struct vop_setattr_args *ap)
>         /*
>          * Disallow write attempts if the filesystem is mounted read-only.
>          */
> -       if ((vap->va_flags != VNOVAL || vap->va_uid != (uid_t)VNOVAL ||
> +       if ((vap->va_flags != (u_long)VNOVAL || vap->va_uid != (uid_t)VNOVAL 
> ||
>             vap->va_gid != (gid_t)VNOVAL || vap->va_atime.tv_sec != VNOVAL ||
>             vap->va_mtime.tv_sec != VNOVAL ||
>             vap->va_birthtime.tv_sec != VNOVAL ||
> -           vap->va_mode != (mode_t)VNOVAL ||
> -           vap->va_flags != (u_long)VNOVAL) &&
> +           vap->va_mode != (mode_t)VNOVAL) &&
>             (vp->v_mount->mnt_flag & MNT_RDONLY))
>                 return (EROFS);
>         if (vap->va_size != VNOVAL) {
>
> DES
> --
> Dag-Erling Smørgrav - d...@freebsd.org

Reply via email to