copyin & copyout now return EFAULT and all callers uniformly
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Wed, 29 Dec 1982 15:49:06 +0000 (07:49 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Wed, 29 Dec 1982 15:49:06 +0000 (07:49 -0800)
return (or ignore) this value

SCCS-vsn: sys/kern/kern_descrip.c 5.21
SCCS-vsn: sys/kern/kern_proc.c 4.56
SCCS-vsn: sys/kern/kern_prot.c 5.14
SCCS-vsn: sys/kern/kern_resource.c 4.19
SCCS-vsn: sys/kern/kern_time.c 5.13
SCCS-vsn: sys/kern/sys_generic.c 5.29
SCCS-vsn: sys/kern/uipc_syscalls.c 4.39
SCCS-vsn: sys/kern/vfs_syscalls.c 4.46
SCCS-vsn: sys/ufs/ffs/ffs_vnops.c 4.46
SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 4.46
SCCS-vsn: sys/ufs/lfs/lfs_vnops.c 4.46
SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 4.46
SCCS-vsn: sys/kern/vfs_xxx.c 4.4
SCCS-vsn: sys/kern/uipc_mu_msg.c 4.3

14 files changed:
usr/src/sys/kern/kern_descrip.c
usr/src/sys/kern/kern_proc.c
usr/src/sys/kern/kern_prot.c
usr/src/sys/kern/kern_resource.c
usr/src/sys/kern/kern_time.c
usr/src/sys/kern/sys_generic.c
usr/src/sys/kern/uipc_mu_msg.c
usr/src/sys/kern/uipc_syscalls.c
usr/src/sys/kern/vfs_syscalls.c
usr/src/sys/kern/vfs_xxx.c
usr/src/sys/ufs/ffs/ffs_vnops.c
usr/src/sys/ufs/ffs/ufs_vnops.c
usr/src/sys/ufs/lfs/lfs_vnops.c
usr/src/sys/ufs/ufs/ufs_vnops.c

index 469198c..44e389c 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_descrip.c  5.20    82/12/17        */
+/*     kern_descrip.c  5.21    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -48,11 +48,10 @@ getdprop()
                return;
        adtype.dt_type = 0;             /* XXX */
        adtype.dt_protocol = 0;         /* XXX */
                return;
        adtype.dt_type = 0;             /* XXX */
        adtype.dt_protocol = 0;         /* XXX */
-       if (copyout((caddr_t)&adtype, (caddr_t)uap->dtypeb,
-           sizeof (struct dtype)) < 0) {
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&adtype, (caddr_t)uap->dtypeb,
+           sizeof (struct dtype))
+       if (u.u_error)
                return;
                return;
-       }
 }
 
 getdopt()
 }
 
 getdopt()
@@ -160,11 +159,10 @@ wrap()
        fp = getf(uap->d);
        if (fp == 0)
                return;
        fp = getf(uap->d);
        if (fp == 0)
                return;
-       if (copyin((caddr_t)uap->dtypeb, (caddr_t)&adtype,
-           sizeof (struct dtype)) < 0) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->dtypeb, (caddr_t)&adtype,
+           sizeof (struct dtype));
+       if (u.u_error)
                return;
                return;
-       }
        /* DO WRAP */
 }
 
        /* DO WRAP */
 }
 
@@ -193,11 +191,10 @@ select()
 
 #define        getbits(name, x) \
        if (uap->name) { \
 
 #define        getbits(name, x) \
        if (uap->name) { \
-               if (copyin((caddr_t)uap->name, (caddr_t)&ibits[x], \
-                   sizeof (ibits[x]))) { \
-                       u.u_error = EFAULT; \
+               u.u_error = copyin((caddr_t)uap->name, (caddr_t)&ibits[x], \
+                   sizeof (ibits[x])); \
+               if (u.u_error) \
                        goto done; \
                        goto done; \
-               } \
        } else \
                ibits[x] = 0;
        getbits(in, 0);
        } else \
                ibits[x] = 0;
        getbits(in, 0);
@@ -206,10 +203,10 @@ select()
 #undef getbits
 
        if (uap->tv) {
 #undef getbits
 
        if (uap->tv) {
-               if (copyin((caddr_t)uap->tv, (caddr_t)&atv, sizeof (atv))) {
-                       u.u_error = EFAULT;
+               u.u_error = copyin((caddr_t)uap->tv, (caddr_t)&atv,
+                       sizeof (atv));
+               if (u.u_error)
                        goto done;
                        goto done;
-               }
                if (itimerfix(&atv)) {
                        u.u_error = EINVAL;
                        goto done;
                if (itimerfix(&atv)) {
                        u.u_error = EINVAL;
                        goto done;
@@ -253,9 +250,10 @@ retry:
 done:
 #define        putbits(name, x) \
        if (uap->name) { \
 done:
 #define        putbits(name, x) \
        if (uap->name) { \
-               if (copyout((caddr_t)&obits[x], (caddr_t)uap->name, \
-                   sizeof (obits[x]))) \
-                       u.u_error = EFAULT; \
+               int error = copyout((caddr_t)&obits[x], (caddr_t)uap->name, \
+                   sizeof (obits[x])); \
+               if (error) \
+                       u.u_error = error; \
        }
        putbits(in, 0);
        putbits(ou, 1);
        }
        putbits(in, 0);
        putbits(ou, 1);
index 33d6aa2..0836933 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_proc.c     4.55    82/12/28        */
+/*     kern_proc.c     4.56    82/12/28        */
 
 #include "../machine/reg.h"
 #include "../machine/pte.h"
 
 #include "../machine/reg.h"
 #include "../machine/pte.h"
@@ -52,8 +52,7 @@ gethostname()
        len = uap->len;
        if (len > hostnamelen)
                len = hostnamelen;
        len = uap->len;
        if (len > hostnamelen)
                len = hostnamelen;
-       if (copyout((caddr_t)hostname, (caddr_t)uap->hostname, len))
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)hostname, (caddr_t)uap->hostname, len);
 }
 
 sethostname()
 }
 
 sethostname()
@@ -70,8 +69,7 @@ sethostname()
                return;
        }
        hostnamelen = uap->len;
                return;
        }
        hostnamelen = uap->len;
-       if (copyin((caddr_t)uap->hostname, hostname, uap->len))
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->hostname, hostname, uap->len);
        hostname[hostnamelen] = 0;
 }
 
        hostname[hostnamelen] = 0;
 }
 
index c5b04c3..a72ca91 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_prot.c     5.13    82/12/17        */
+/*     kern_prot.c     5.14    82/12/28        */
 
 /*
  * System calls related to processes and protection
 
 /*
  * System calls related to processes and protection
@@ -75,11 +75,10 @@ getgroups()
                return;
        }
        uap->gidsetsize = gp - u.u_groups;
                return;
        }
        uap->gidsetsize = gp - u.u_groups;
-       if (copyout((caddr_t)u.u_groups, (caddr_t)uap->gidset,
-           uap->gidsetsize * sizeof (u.u_groups[0]))) {
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)u.u_groups, (caddr_t)uap->gidset,
+           uap->gidsetsize * sizeof (u.u_groups[0]));
+       if (u.u_error)
                return;
                return;
-       }
        u.u_r.r_val1 = uap->gidsetsize;
 }
 
        u.u_r.r_val1 = uap->gidsetsize;
 }
 
@@ -226,11 +225,10 @@ setgroups()
                u.u_error = EINVAL;
                return;
        }
                u.u_error = EINVAL;
                return;
        }
-       if (copyin((caddr_t)uap->gidset, (caddr_t)u.u_groups,
-           uap->gidsetsize * sizeof (u.u_groups[0]))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->gidset, (caddr_t)u.u_groups,
+           uap->gidsetsize * sizeof (u.u_groups[0]));
+       if (u.u_error)
                return;
                return;
-       }
        for (gp = &u.u_groups[uap->gidsetsize]; gp < &u.u_groups[NGROUPS]; gp++)
                *gp = -1;
 }
        for (gp = &u.u_groups[uap->gidsetsize]; gp < &u.u_groups[NGROUPS]; gp++)
                *gp = -1;
 }
index 9f748f2..ca6c43e 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_resource.c 4.18    82/12/17        */
+/*     kern_resource.c 4.19    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -156,10 +156,10 @@ setrlimit()
                return;
        }
        alimp = &u.u_rlimit[uap->which];
                return;
        }
        alimp = &u.u_rlimit[uap->which];
-       if (copyin((caddr_t)uap->lim, (caddr_t)&alim, sizeof (struct rlimit))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->lim, (caddr_t)&alim,
+               sizeof (struct rlimit));
+       if (u.u_error)
                return;
                return;
-       }
        if (alim.rlim_cur > alimp->rlim_max || alim.rlim_max > alimp->rlim_max)
                if (!suser())
                        return;
        if (alim.rlim_cur > alimp->rlim_max || alim.rlim_max > alimp->rlim_max)
                if (!suser())
                        return;
@@ -191,11 +191,8 @@ getrlimit()
                u.u_error = EINVAL;
                return;
        }
                u.u_error = EINVAL;
                return;
        }
-       if (copyout((caddr_t)&u.u_rlimit[uap->which], (caddr_t)uap->rlp,
-           sizeof (struct rlimit))) {
-               u.u_error = EFAULT;
-               return;
-       }
+       u.u_error = copyout((caddr_t)&u.u_rlimit[uap->which], (caddr_t)uap->rlp,
+           sizeof (struct rlimit));
 }
 
 getrusage()
 }
 
 getrusage()
@@ -220,11 +217,8 @@ getrusage()
                u.u_error = EINVAL;
                return;
        }
                u.u_error = EINVAL;
                return;
        }
-       if (copyout((caddr_t)rup, (caddr_t)uap->rusage,
-           sizeof (struct rusage))) {
-               u.u_error = EFAULT;
-               return;
-       }
+       u.u_error = copyout((caddr_t)rup, (caddr_t)uap->rusage,
+           sizeof (struct rusage));
 }
 
 ruadd(ru, ru2)
 }
 
 ruadd(ru, ru2)
@@ -266,10 +260,7 @@ otimes()
        atms.tms_stime = scale60(&u.u_ru.ru_stime);
        atms.tms_cutime = scale60(&u.u_cru.ru_utime);
        atms.tms_cstime = scale60(&u.u_cru.ru_stime);
        atms.tms_stime = scale60(&u.u_ru.ru_stime);
        atms.tms_cutime = scale60(&u.u_cru.ru_utime);
        atms.tms_cstime = scale60(&u.u_cru.ru_stime);
-       if (copyout((caddr_t)&atms, (caddr_t)uap->tmsb, sizeof (atms))) {
-               u.u_error = EFAULT;
-               return;
-       }
+       u.u_error = copyout((caddr_t)&atms, (caddr_t)uap->tmsb, sizeof (atms));
 }
 
 scale60(tvp)
 }
 
 scale60(tvp)
@@ -291,17 +282,17 @@ ovtimes()
 
        if (uap->par) {
                getvtimes(&u.u_ru, &avt);
 
        if (uap->par) {
                getvtimes(&u.u_ru, &avt);
-               if (copyout((caddr_t)&avt, (caddr_t)uap->par, sizeof (avt))) {
-                       u.u_error = EFAULT;
+               u.u_error = copyout((caddr_t)&avt, (caddr_t)uap->par,
+                       sizeof (avt));
+               if (u.u_error)
                        return;
                        return;
-               }
        }
        if (uap->chi) {
                getvtimes(&u.u_cru, &avt);
        }
        if (uap->chi) {
                getvtimes(&u.u_cru, &avt);
-               if (copyout((caddr_t)&avt, (caddr_t)uap->chi, sizeof (avt))) {
-                       u.u_error = EFAULT;
+               u.u_error = copyout((caddr_t)&avt, (caddr_t)uap->chi,
+                       sizeof (avt));
+               if (u.u_error)
                        return;
                        return;
-               }
        }
 }
 
        }
 }
 
index b7710b5..1065e26 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_time.c     5.12    82/12/17        */
+/*     kern_time.c     5.13    82/12/28        */
 
 #include "../machine/reg.h"
 
 
 #include "../machine/reg.h"
 
@@ -29,17 +29,13 @@ gettimeofday()
        int s;
 
        s = spl7(); atv = time; splx(s);
        int s;
 
        s = spl7(); atv = time; splx(s);
-       if (copyout((caddr_t)&atv, (caddr_t)uap->tp, sizeof (atv))) {
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&atv, (caddr_t)uap->tp, sizeof (atv));
+       if (u.u_error)
                return;
                return;
-       }
        if (uap->tzp == 0)
                return;
        /* SHOULD HAVE PER-PROCESS TIMEZONE */
        if (uap->tzp == 0)
                return;
        /* SHOULD HAVE PER-PROCESS TIMEZONE */
-       if (copyout((caddr_t)&tz, (caddr_t)uap->tzp, sizeof (tz))) {
-               u.u_error = EFAULT;
-               return;
-       }
+       u.u_error = copyout((caddr_t)&tz, (caddr_t)uap->tzp, sizeof (tz));
 }
 
 settimeofday()
 }
 
 settimeofday()
@@ -51,16 +47,16 @@ settimeofday()
        struct timeval atv;
        struct timezone atz;
 
        struct timeval atv;
        struct timezone atz;
 
-       if (copyin((caddr_t)uap->tv, (caddr_t)&atv, sizeof (struct timeval))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->tv, (caddr_t)&atv,
+               sizeof (struct timeval));
+       if (u.u_error)
                return;
                return;
-       }
        setthetime(&atv);
        if (uap->tzp && suser()) {
        setthetime(&atv);
        if (uap->tzp && suser()) {
-               if (copyin((caddr_t)uap->tzp, (caddr_t)&atz, sizeof (atz))) {
-                       u.u_error = EFAULT;
+               u.u_error = copyin((caddr_t)uap->tzp, (caddr_t)&atz,
+                       sizeof (atz));
+               if (u.u_error)
                        return;
                        return;
-               }
        }
 }
 
        }
 }
 
@@ -128,9 +124,8 @@ getitimer()
        } else
                aitv = u.u_timer[uap->which];
        splx(s);
        } else
                aitv = u.u_timer[uap->which];
        splx(s);
-       if (copyout((caddr_t)&aitv, (caddr_t)uap->itv,
-           sizeof (struct itimerval)))
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&aitv, (caddr_t)uap->itv,
+           sizeof (struct itimerval));
        splx(s);
 }
 
        splx(s);
 }
 
@@ -148,11 +143,10 @@ setitimer()
                u.u_error = EINVAL;
                return;
        }
                u.u_error = EINVAL;
                return;
        }
-       if (copyin((caddr_t)uap->itv, (caddr_t)&aitv,
-           sizeof (struct itimerval))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->itv, (caddr_t)&aitv,
+           sizeof (struct itimerval));
+       if (u.u_error)
                return;
                return;
-       }
        if (uap->oitv) {
                uap->itv = uap->oitv;
                getitimer();
        if (uap->oitv) {
                uap->itv = uap->oitv;
                getitimer();
@@ -346,8 +340,7 @@ oftime()
        (void) spl0();
        tb.timezone = tz.tz_minuteswest;
        tb.dstflag = tz.tz_dsttime;
        (void) spl0();
        tb.timezone = tz.tz_minuteswest;
        tb.dstflag = tz.tz_dsttime;
-       if (copyout((caddr_t)&tb, (caddr_t)uap->tp, sizeof (tb)) < 0)
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&tb, (caddr_t)uap->tp, sizeof (tb));
 }
 
 oalarm()
 }
 
 oalarm()
index 3dc1a04..7bef21b 100644 (file)
@@ -1,4 +1,4 @@
-/*     sys_generic.c   5.28    82/12/28        */
+/*     sys_generic.c   5.29    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -60,11 +60,10 @@ readv()
        }
        auio.uio_iov = aiov;
        auio.uio_iovcnt = uap->iovcnt;
        }
        auio.uio_iov = aiov;
        auio.uio_iovcnt = uap->iovcnt;
-       if (copyin((caddr_t)uap->iovp, (caddr_t)aiov,
-           (unsigned)(uap->iovcnt * sizeof (struct iovec)))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->iovp, (caddr_t)aiov,
+           (unsigned)(uap->iovcnt * sizeof (struct iovec)));
+       if (u.u_error)
                return;
                return;
-       }
        rwuio(&auio, UIO_READ);
 }
 
        rwuio(&auio, UIO_READ);
 }
 
@@ -104,11 +103,10 @@ writev()
        }
        auio.uio_iov = aiov;
        auio.uio_iovcnt = uap->iovcnt;
        }
        auio.uio_iov = aiov;
        auio.uio_iovcnt = uap->iovcnt;
-       if (copyin((caddr_t)uap->iovp, (caddr_t)aiov,
-           (unsigned)(uap->iovcnt * sizeof (struct iovec)))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->iovp, (caddr_t)aiov,
+           (unsigned)(uap->iovcnt * sizeof (struct iovec)));
+       if (u.u_error)
                return;
                return;
-       }
        rwuio(&auio, UIO_WRITE);
 }
 
        rwuio(&auio, UIO_WRITE);
 }
 
@@ -350,7 +348,7 @@ uiomove(cp, n, rw, uio)
                        else
                                error = copyin(iov->iov_base, cp, cnt);
                        if (error)
                        else
                                error = copyin(iov->iov_base, cp, cnt);
                        if (error)
-                               return (EFAULT);        /* XXX */
+                               return (error);
                        break;
 
                case 1:
                        break;
 
                case 1:
@@ -513,10 +511,9 @@ ioctl()
                return;
        }
        if (com&IOC_IN && size) {
                return;
        }
        if (com&IOC_IN && size) {
-               if (copyin(uap->cmarg, (caddr_t)data, (u_int)size)) {
-                       u.u_error = EFAULT;
+               u.u_error = copyin(uap->cmarg, (caddr_t)data, (u_int)size);
+               if (u.u_error)
                        return;
                        return;
-               }
        } else
                *(caddr_t *)data = uap->cmarg;
        /*
        } else
                *(caddr_t *)data = uap->cmarg;
        /*
@@ -556,9 +553,8 @@ returndata:
         * Copy any data to user, size was
         * already set and checked above.
         */
         * Copy any data to user, size was
         * already set and checked above.
         */
-       if (u.u_error == 0 && (com&IOC_OUT))
-               if (size && copyout(data, uap->cmarg, (u_int)size))
-                       u.u_error = EFAULT;
+       if (u.u_error == 0 && (com&IOC_OUT) && size)
+               u.u_error = copyout(data, uap->cmarg, (u_int)size);
 }
 
 /*
 }
 
 /*
index 5e95b16..54c6b62 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_mu_msg.c   Melb 4.2        82/11/13        */
+/*     uipc_mu_msg.c   Melb 4.3        82/12/28        */
 
 #ifdef MUSH
 #include "../h/param.h"
 
 #ifdef MUSH
 #include "../h/param.h"
@@ -56,9 +56,8 @@ mu_msg()
                                p->p_msgflgs |= MSGOK;
                                sleep((caddr_t) &p->p_mb, MSGPRI);
                        }
                                p->p_msgflgs |= MSGOK;
                                sleep((caddr_t) &p->p_mb, MSGPRI);
                        }
-                       if (copyout((caddr_t)&p->p_mb, (caddr_t)uap->msgp,
-                           sizeof(mmsgbuf)))
-                               u.u_error = EFAULT;
+                       u.u_error = copyout((caddr_t)&p->p_mb,
+                               (caddr_t)uap->msgp, sizeof(mmsgbuf));
                        p->p_msgflgs &= ~(MSGOK|MSGWRPLY);
                        if (p->p_mb.msg_rply)
                                p->p_msgflgs |= MSGRPLY;
                        p->p_msgflgs &= ~(MSGOK|MSGWRPLY);
                        if (p->p_mb.msg_rply)
                                p->p_msgflgs |= MSGRPLY;
@@ -74,11 +73,10 @@ mu_msg()
                case MSG_SEND:
                case MSG_SNDW:
                case MSG_RPLY:
                case MSG_SEND:
                case MSG_SNDW:
                case MSG_RPLY:
-                       if (copyin((caddr_t)uap->msgp, (caddr_t)&mb,
-                           sizeof(mmsgbuf))) {
-                               u.u_error = EFAULT;
+                       u.u_error = copyin((caddr_t)uap->msgp, (caddr_t)&mb,
+                           sizeof(mmsgbuf));
+                       if (u.u_error)
                                return;
                                return;
-                       }
                        if (uap->cmd == MSG_RPLY) {
                                if (!(p->p_msgflgs & MSGRPLY) ||
                                    mb.msg_pid != p->p_mb.msg_pid) {
                        if (uap->cmd == MSG_RPLY) {
                                if (!(p->p_msgflgs & MSGRPLY) ||
                                    mb.msg_pid != p->p_mb.msg_pid) {
index a6a0a50..3d83c4b 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_syscalls.c 4.38    82/12/14        */
+/*     uipc_syscalls.c 4.39    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -121,10 +121,10 @@ accept()
 
        if (uap->name == 0)
                goto noname;
 
        if (uap->name == 0)
                goto noname;
-       if (copyin((caddr_t)uap->anamelen, (caddr_t)&namelen, sizeof (namelen))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->anamelen, (caddr_t)&namelen,
+               sizeof (namelen));
+       if (u.u_error)
                return;
                return;
-       }
        if (useracc((caddr_t)uap->name, (u_int)namelen, B_WRITE) == 0) {
                u.u_error = EFAULT;
                return;
        if (useracc((caddr_t)uap->name, (u_int)namelen, B_WRITE) == 0) {
                u.u_error = EFAULT;
                return;
@@ -362,10 +362,10 @@ recvfrom()
        struct mbuf *from;
        int fromlen;
 
        struct mbuf *from;
        int fromlen;
 
-       if (copyin((caddr_t)uap->fromlenaddr, (caddr_t)&fromlen, sizeof (fromlen))) {
-               u.u_error = EFAULT;
+       u.u_error = copyin((caddr_t)uap->fromlenaddr, (caddr_t)&fromlen,
+               sizeof (fromlen));
+       if (u.u_error)
                return;
                return;
-       }
        fp = getf(uap->s);
        if (fp == 0)
                return;
        fp = getf(uap->s);
        if (fp == 0)
                return;
@@ -393,16 +393,15 @@ recvfrom()
        else {
                if (fromlen > from->m_len)
                        fromlen = from->m_len;
        else {
                if (fromlen > from->m_len)
                        fromlen = from->m_len;
-               if (copyout(mtod(from, caddr_t), uap->from, (u_int)fromlen)) {
-                       u.u_error = EFAULT;
+               u.u_error = copyout(mtod(from, caddr_t), uap->from,
+                       (u_int)fromlen);
+               if (u.u_error)
                        goto bad;
                        goto bad;
-               }
        }
        }
-       if (copyout((caddr_t)&fromlen, (caddr_t)uap->fromlenaddr,
-           sizeof (fromlen))) {
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&fromlen, (caddr_t)uap->fromlenaddr,
+           sizeof (fromlen));
+       if (u.u_error)
                goto bad;
                goto bad;
-       }
        u.u_r.r_val1 = uap->len - auio.uio_resid;
 bad:
        if (from)
        u.u_r.r_val1 = uap->len - auio.uio_resid;
 bad:
        if (from)
@@ -535,8 +534,8 @@ ssocketaddr()
                (*so->so_proto->pr_usrreq)(so, PRU_SOCKADDR, 0, m, 0);
        if (u.u_error)
                goto bad;
                (*so->so_proto->pr_usrreq)(so, PRU_SOCKADDR, 0, m, 0);
        if (u.u_error)
                goto bad;
-       if (copyout(mtod(m, caddr_t), (caddr_t)uap->asa, sizeof (struct sockaddr)))
-               u.u_error = EFAULT;
+       u.u_error = copyout(mtod(m, caddr_t), (caddr_t)uap->asa,
+               sizeof (struct sockaddr));
 bad:
        m_freem(m);
 }
 bad:
        m_freem(m);
 }
@@ -547,17 +546,18 @@ sockname(aname, name, namelen)
        int namelen;
 {
        register struct mbuf *m;
        int namelen;
 {
        register struct mbuf *m;
+       int error;
 
        if (namelen > MLEN)
                return (EINVAL);
        m = m_get(M_WAIT, MT_SONAME);
        m->m_len = namelen;
 
        if (namelen > MLEN)
                return (EINVAL);
        m = m_get(M_WAIT, MT_SONAME);
        m->m_len = namelen;
-       if (copyin(name, mtod(m, caddr_t), (u_int)namelen)) {
+       error = copyin(name, mtod(m, caddr_t), (u_int)namelen);
+       if (error)
                (void) m_free(m);
                (void) m_free(m);
-               return (EFAULT);
-       }
-       *aname = m;
-       return (0);
+       else
+               *aname = m;
+       return (error);
 }
 
 sockopt(so, opt)
 }
 
 sockopt(so, opt)
@@ -565,21 +565,24 @@ sockopt(so, opt)
        caddr_t opt;
 {
        register struct mbuf *m;
        caddr_t opt;
 {
        register struct mbuf *m;
+       int error;
 
        if (opt == 0) {
                so->so_optlen = 0;
                so->so_optdata = 0;
                return (0);
        }
 
        if (opt == 0) {
                so->so_optlen = 0;
                so->so_optdata = 0;
                return (0);
        }
-       if (copyin((caddr_t)opt, (caddr_t)so, sizeof (struct socketopt)))
-               return (EFAULT);
+       error = copyin((caddr_t)opt, (caddr_t)so, sizeof (struct socketopt));
+       if (error)
+               return (error);
        if (so->so_optlen < 0 || so->so_optlen > MLEN)
                return (EINVAL);
        m = m_get(M_WAIT, MT_SOOPTS);
        m->m_len = so->so_optlen;
        if (so->so_optlen < 0 || so->so_optlen > MLEN)
                return (EINVAL);
        m = m_get(M_WAIT, MT_SOOPTS);
        m->m_len = so->so_optlen;
-       if (copyin(so->so_optdata, mtod(m, caddr_t), (u_int)m->m_len)) {
+       error = copyin(so->so_optdata, mtod(m, caddr_t), (u_int)m->m_len);
+       if (error) {
                (void) m_free(m);
                (void) m_free(m);
-               return (EFAULT);
+               return (error);
        }
        so->so_optdata = mtod(m, caddr_t);
        return (0);
        }
        so->so_optdata = mtod(m, caddr_t);
        return (0);
index 4c3e888..f28369a 100644 (file)
@@ -1,4 +1,4 @@
-/*     vfs_syscalls.c  4.45    82/12/24        */
+/*     vfs_syscalls.c  4.46    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -509,8 +509,7 @@ stat1(ip, ub)
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
-       if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds));
 }
 
 /*
 }
 
 /*
@@ -738,9 +737,8 @@ outime()
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
-       if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) {
-               u.u_error = EFAULT;
-       } else {
+       u.u_error = copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv));
+       if (u.u_error == 0) {
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
index c352854..21b271f 100644 (file)
@@ -1,4 +1,4 @@
-/*     vfs_xxx.c       4.3     82/12/28        */
+/*     vfs_xxx.c       4.4     82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -122,7 +122,6 @@ ostat1(ip, ub)
        ds.ost_atime = (int)ip->i_atime;
        ds.ost_mtime = (int)ip->i_mtime;
        ds.ost_ctime = (int)ip->i_ctime;
        ds.ost_atime = (int)ip->i_atime;
        ds.ost_mtime = (int)ip->i_mtime;
        ds.ost_ctime = (int)ip->i_ctime;
-       if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds));
 }
 #endif
 }
 #endif
index 967d82a..a8a37f9 100644 (file)
@@ -1,4 +1,4 @@
-/*     ffs_vnops.c     4.45    82/12/24        */
+/*     ffs_vnops.c     4.46    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -509,8 +509,7 @@ stat1(ip, ub)
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
-       if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds));
 }
 
 /*
 }
 
 /*
@@ -738,9 +737,8 @@ outime()
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
-       if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) {
-               u.u_error = EFAULT;
-       } else {
+       u.u_error = copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv));
+       if (u.u_error == 0) {
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
index 83fcbe1..458d5d7 100644 (file)
@@ -1,4 +1,4 @@
-/*     ufs_vnops.c     4.45    82/12/24        */
+/*     ufs_vnops.c     4.46    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -509,8 +509,7 @@ stat1(ip, ub)
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
-       if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds));
 }
 
 /*
 }
 
 /*
@@ -738,9 +737,8 @@ outime()
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
-       if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) {
-               u.u_error = EFAULT;
-       } else {
+       u.u_error = copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv));
+       if (u.u_error == 0) {
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
index 4a0c0e2..2a42a60 100644 (file)
@@ -1,4 +1,4 @@
-/*     lfs_vnops.c     4.45    82/12/24        */
+/*     lfs_vnops.c     4.46    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -509,8 +509,7 @@ stat1(ip, ub)
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
-       if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds));
 }
 
 /*
 }
 
 /*
@@ -738,9 +737,8 @@ outime()
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
-       if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) {
-               u.u_error = EFAULT;
-       } else {
+       u.u_error = copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv));
+       if (u.u_error == 0) {
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
index 83fcbe1..458d5d7 100644 (file)
@@ -1,4 +1,4 @@
-/*     ufs_vnops.c     4.45    82/12/24        */
+/*     ufs_vnops.c     4.46    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -509,8 +509,7 @@ stat1(ip, ub)
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
        ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
-       if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-               u.u_error = EFAULT;
+       u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds));
 }
 
 /*
 }
 
 /*
@@ -738,9 +737,8 @@ outime()
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
        uap = (struct a *)u.u_ap;
        if ((ip = owner(1)) == NULL)
                return;
-       if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) {
-               u.u_error = EFAULT;
-       } else {
+       u.u_error = copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv));
+       if (u.u_error == 0) {
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
                ip->i_flag |= IACC|IUPD|ICHG;
                tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
                tv1.tv_sec = tv[1]; tv1.tv_usec = 0;