Martin Natano wrote:
> Below the uiomove() conversion for nfs. I didn't change the type of 'n'
> to be size_t, because it never exceeds the maximum rpc size (nm_rsize),
> which is an integer too. (Also, to avoid unnecessary code churn.)

Looks good. It's easy to see in the code that (0 < on < biosize), so we
have (biosize - on > 0). Since these variables are ints, the result of
ulmin will fit into an int also.

Remaining comments see inline.
 
> Index: nfs/nfs_bio.c
> ===================================================================
> RCS file: /cvs/src/sys/nfs/nfs_bio.c,v
> retrieving revision 1.80
> diff -u -p -u -r1.80 nfs_bio.c
> --- nfs/nfs_bio.c     14 Mar 2015 03:38:52 -0000      1.80
> +++ nfs/nfs_bio.c     27 Jan 2016 20:46:53 -0000
> @@ -177,7 +177,7 @@ again:
>                           return (error);
>                       }
>               }
> -             n = min((unsigned)(biosize - on), uio->uio_resid);
> +             n = ulmin(biosize - on, uio->uio_resid);
>               offdiff = np->n_size - uio->uio_offset;
>               if (offdiff < (off_t)n)
>                       n = (int)offdiff;
> @@ -211,7 +211,7 @@ again:
>                               return (error);
>                       }
>               }
> -             n = min(uio->uio_resid, NFS_MAXPATHLEN - bp->b_resid);
> +             n = ulmin(uio->uio_resid, NFS_MAXPATHLEN - bp->b_resid);
>               got_buf = 1;
>               on = 0;
>               break;
> @@ -223,7 +223,7 @@ again:
>           if (n > 0) {
>               if (!baddr)
>                       baddr = bp->b_data;
> -             error = uiomovei(baddr + on, (int)n, uio);
> +             error = uiomove(baddr + on, n, uio);
>           }
>  
>           if (vp->v_type == VLNK)
> @@ -318,7 +318,7 @@ nfs_write(void *v)
>               nfsstats.biocache_writes++;
>               lbn = uio->uio_offset / biosize;
>               on = uio->uio_offset & (biosize-1);
> -             n = min((unsigned)(biosize - on), uio->uio_resid);
> +             n = ulmin(biosize - on, uio->uio_resid);
>               bn = lbn * (biosize / DEV_BSIZE);
>  again:
>               bp = nfs_getcacheblk(vp, bn, biosize, p);
> @@ -349,7 +349,7 @@ again:
>                       goto again;
>               }
>  
> -             error = uiomovei((char *)bp->b_data + on, n, uio);
> +             error = uiomove((char *)bp->b_data + on, n, uio);
>               if (error) {
>                       bp->b_flags |= B_ERROR;
>                       brelse(bp);
> @@ -590,7 +590,7 @@ nfs_doio(struct buf *bp, struct proc *p)
>                       len = np->n_size - ((((off_t)bp->b_blkno) << DEV_BSHIFT)
>                               + diff);
>                       if (len > 0) {
> -                         len = min(len, uiop->uio_resid);
> +                         len = ulmin(len, uiop->uio_resid);
>                           memset((char *)bp->b_data + diff, 0, len);
>                           bp->b_validend = diff + len;
>                       } else
> Index: nfs/nfs_subs.c
> ===================================================================
> RCS file: /cvs/src/sys/nfs/nfs_subs.c,v
> retrieving revision 1.128
> diff -u -p -u -r1.128 nfs_subs.c
> --- nfs/nfs_subs.c    16 Jun 2015 11:09:40 -0000      1.128
> +++ nfs/nfs_subs.c    27 Jan 2016 20:46:58 -0000
> @@ -712,8 +712,8 @@ nfsm_uiotombuf(struct mbuf **mp, struct 
>       uiop->uio_rw = UIO_WRITE;
>  
>       while (len) {
> -             xfer = min(len, M_TRAILINGSPACE(mb));
> -             uiomovei(mb_offset(mb), xfer, uiop);
> +             xfer = ulmin(len, M_TRAILINGSPACE(mb));
> +             uiomove(mb_offset(mb), xfer, uiop);
>               mb->m_len += xfer;
>               len -= xfer;
                if (len > 0) {

Ok also. len is a size_t and we already had the M_TRAILINGSPACE
returns a positive value.

> Index: nfs/nfs_vnops.c
> ===================================================================
> RCS file: /cvs/src/sys/nfs/nfs_vnops.c,v
> retrieving revision 1.166
> diff -u -p -u -r1.166 nfs_vnops.c
> --- nfs/nfs_vnops.c   22 Dec 2015 21:36:57 -0000      1.166
> +++ nfs/nfs_vnops.c   27 Jan 2016 20:47:05 -0000
> @@ -2032,7 +2032,7 @@ nfs_readdir(void *v)
>                               break;
>                       }
>  
> -                     if ((error = uiomovei(dp, dp->d_reclen, uio)))
> +                     if ((error = uiomove(dp, dp->d_reclen, uio)))

Simple because d_reclen is unsigned.

Reply via email to