From 127f7d76e6fc650e9450bf325ab8231bb31f61ec Mon Sep 17 00:00:00 2001 From: Sam Leffler Date: Wed, 29 Dec 1982 07:49:06 -0800 Subject: [PATCH] copyin & copyout now return EFAULT and all callers uniformly 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 --- usr/src/sys/kern/kern_descrip.c | 36 ++++++++++------------ usr/src/sys/kern/kern_proc.c | 8 ++--- usr/src/sys/kern/kern_prot.c | 16 +++++----- usr/src/sys/kern/kern_resource.c | 39 +++++++++-------------- usr/src/sys/kern/kern_time.c | 39 ++++++++++------------- usr/src/sys/kern/sys_generic.c | 28 ++++++++--------- usr/src/sys/kern/uipc_mu_msg.c | 14 ++++----- usr/src/sys/kern/uipc_syscalls.c | 53 +++++++++++++++++--------------- usr/src/sys/kern/vfs_syscalls.c | 10 +++--- usr/src/sys/kern/vfs_xxx.c | 5 ++- usr/src/sys/ufs/ffs/ffs_vnops.c | 10 +++--- usr/src/sys/ufs/ffs/ufs_vnops.c | 10 +++--- usr/src/sys/ufs/lfs/lfs_vnops.c | 10 +++--- usr/src/sys/ufs/ufs/ufs_vnops.c | 10 +++--- 14 files changed, 126 insertions(+), 162 deletions(-) diff --git a/usr/src/sys/kern/kern_descrip.c b/usr/src/sys/kern/kern_descrip.c index 469198c0fa..44e389cc2e 100644 --- a/usr/src/sys/kern/kern_descrip.c +++ b/usr/src/sys/kern/kern_descrip.c @@ -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" @@ -48,11 +48,10 @@ getdprop() 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; - } } getdopt() @@ -160,11 +159,10 @@ wrap() 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; - } /* DO WRAP */ } @@ -193,11 +191,10 @@ select() #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; \ - } \ } else \ ibits[x] = 0; getbits(in, 0); @@ -206,10 +203,10 @@ select() #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; - } if (itimerfix(&atv)) { u.u_error = EINVAL; goto done; @@ -253,9 +250,10 @@ retry: 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); diff --git a/usr/src/sys/kern/kern_proc.c b/usr/src/sys/kern/kern_proc.c index 33d6aa2bf0..0836933f27 100644 --- a/usr/src/sys/kern/kern_proc.c +++ b/usr/src/sys/kern/kern_proc.c @@ -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" @@ -52,8 +52,7 @@ gethostname() 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() @@ -70,8 +69,7 @@ sethostname() 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; } diff --git a/usr/src/sys/kern/kern_prot.c b/usr/src/sys/kern/kern_prot.c index c5b04c340f..a72ca91ee9 100644 --- a/usr/src/sys/kern/kern_prot.c +++ b/usr/src/sys/kern/kern_prot.c @@ -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 @@ -75,11 +75,10 @@ getgroups() 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; - } u.u_r.r_val1 = uap->gidsetsize; } @@ -226,11 +225,10 @@ setgroups() 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; - } for (gp = &u.u_groups[uap->gidsetsize]; gp < &u.u_groups[NGROUPS]; gp++) *gp = -1; } diff --git a/usr/src/sys/kern/kern_resource.c b/usr/src/sys/kern/kern_resource.c index 9f748f25c2..ca6c43e47a 100644 --- a/usr/src/sys/kern/kern_resource.c +++ b/usr/src/sys/kern/kern_resource.c @@ -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" @@ -156,10 +156,10 @@ setrlimit() 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; - } 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; } - 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() @@ -220,11 +217,8 @@ getrusage() 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) @@ -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); - 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) @@ -291,17 +282,17 @@ ovtimes() 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; - } } 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; - } } } diff --git a/usr/src/sys/kern/kern_time.c b/usr/src/sys/kern/kern_time.c index b7710b5837..1065e26665 100644 --- a/usr/src/sys/kern/kern_time.c +++ b/usr/src/sys/kern/kern_time.c @@ -1,4 +1,4 @@ -/* kern_time.c 5.12 82/12/17 */ +/* kern_time.c 5.13 82/12/28 */ #include "../machine/reg.h" @@ -29,17 +29,13 @@ gettimeofday() 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; - } 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() @@ -51,16 +47,16 @@ settimeofday() 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; - } 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; - } } } @@ -128,9 +124,8 @@ getitimer() } 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); } @@ -148,11 +143,10 @@ setitimer() 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; - } 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; - 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() diff --git a/usr/src/sys/kern/sys_generic.c b/usr/src/sys/kern/sys_generic.c index 3dc1a04c98..7bef21b778 100644 --- a/usr/src/sys/kern/sys_generic.c +++ b/usr/src/sys/kern/sys_generic.c @@ -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" @@ -60,11 +60,10 @@ readv() } 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; - } rwuio(&auio, UIO_READ); } @@ -104,11 +103,10 @@ writev() } 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; - } rwuio(&auio, UIO_WRITE); } @@ -350,7 +348,7 @@ uiomove(cp, n, rw, uio) else error = copyin(iov->iov_base, cp, cnt); if (error) - return (EFAULT); /* XXX */ + return (error); break; case 1: @@ -513,10 +511,9 @@ ioctl() 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; - } } else *(caddr_t *)data = uap->cmarg; /* @@ -556,9 +553,8 @@ returndata: * 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); } /* diff --git a/usr/src/sys/kern/uipc_mu_msg.c b/usr/src/sys/kern/uipc_mu_msg.c index 5e95b16730..54c6b62567 100644 --- a/usr/src/sys/kern/uipc_mu_msg.c +++ b/usr/src/sys/kern/uipc_mu_msg.c @@ -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" @@ -56,9 +56,8 @@ mu_msg() 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; @@ -74,11 +73,10 @@ mu_msg() 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; - } if (uap->cmd == MSG_RPLY) { if (!(p->p_msgflgs & MSGRPLY) || mb.msg_pid != p->p_mb.msg_pid) { diff --git a/usr/src/sys/kern/uipc_syscalls.c b/usr/src/sys/kern/uipc_syscalls.c index a6a0a504a9..3d83c4b2c8 100644 --- a/usr/src/sys/kern/uipc_syscalls.c +++ b/usr/src/sys/kern/uipc_syscalls.c @@ -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" @@ -121,10 +121,10 @@ accept() 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; - } 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; - 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; - } fp = getf(uap->s); if (fp == 0) return; @@ -393,16 +393,15 @@ recvfrom() 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; - } } - 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; - } 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; - 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); } @@ -547,17 +546,18 @@ sockname(aname, name, namelen) 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 (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); - return (EFAULT); - } - *aname = m; - return (0); + else + *aname = m; + return (error); } sockopt(so, opt) @@ -565,21 +565,24 @@ sockopt(so, opt) caddr_t opt; { register struct mbuf *m; + int error; 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 (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); - return (EFAULT); + return (error); } so->so_optdata = mtod(m, caddr_t); return (0); diff --git a/usr/src/sys/kern/vfs_syscalls.c b/usr/src/sys/kern/vfs_syscalls.c index 4c3e888c6e..f28369a495 100644 --- a/usr/src/sys/kern/vfs_syscalls.c +++ b/usr/src/sys/kern/vfs_syscalls.c @@ -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" @@ -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; - 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; - 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; diff --git a/usr/src/sys/kern/vfs_xxx.c b/usr/src/sys/kern/vfs_xxx.c index c352854eb9..21b271f904 100644 --- a/usr/src/sys/kern/vfs_xxx.c +++ b/usr/src/sys/kern/vfs_xxx.c @@ -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" @@ -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; - 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 diff --git a/usr/src/sys/ufs/ffs/ffs_vnops.c b/usr/src/sys/ufs/ffs/ffs_vnops.c index 967d82a696..a8a37f9985 100644 --- a/usr/src/sys/ufs/ffs/ffs_vnops.c +++ b/usr/src/sys/ufs/ffs/ffs_vnops.c @@ -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" @@ -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; - 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; - 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; diff --git a/usr/src/sys/ufs/ffs/ufs_vnops.c b/usr/src/sys/ufs/ffs/ufs_vnops.c index 83fcbe1238..458d5d7a38 100644 --- a/usr/src/sys/ufs/ffs/ufs_vnops.c +++ b/usr/src/sys/ufs/ffs/ufs_vnops.c @@ -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" @@ -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; - 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; - 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; diff --git a/usr/src/sys/ufs/lfs/lfs_vnops.c b/usr/src/sys/ufs/lfs/lfs_vnops.c index 4a0c0e22e8..2a42a60a6a 100644 --- a/usr/src/sys/ufs/lfs/lfs_vnops.c +++ b/usr/src/sys/ufs/lfs/lfs_vnops.c @@ -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" @@ -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; - 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; - 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; diff --git a/usr/src/sys/ufs/ufs/ufs_vnops.c b/usr/src/sys/ufs/ufs/ufs_vnops.c index 83fcbe1238..458d5d7a38 100644 --- a/usr/src/sys/ufs/ufs/ufs_vnops.c +++ b/usr/src/sys/ufs/ufs/ufs_vnops.c @@ -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" @@ -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; - 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; - 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; -- 2.20.1