copyin & copyout now return EFAULT and all callers uniformly
[unix-history] / usr / src / sys / ufs / ffs / ffs_vnops.c
index e0ba499..a8a37f9 100644 (file)
@@ -1,4 +1,4 @@
-/*     ffs_vnops.c     4.42    82/11/13        */
+/*     ffs_vnops.c     4.46    82/12/28        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -496,8 +496,11 @@ stat1(ip, ub)
        ds.st_rdev = (dev_t)ip->i_rdev;
        ds.st_size = ip->i_size;
        ds.st_atime = ip->i_atime;
        ds.st_rdev = (dev_t)ip->i_rdev;
        ds.st_size = ip->i_size;
        ds.st_atime = ip->i_atime;
+       ds.st_spare1 = 0;
        ds.st_mtime = ip->i_mtime;
        ds.st_mtime = ip->i_mtime;
+       ds.st_spare2 = 0;
        ds.st_ctime = ip->i_ctime;
        ds.st_ctime = ip->i_ctime;
+       ds.st_spare3 = 0;
        /* this doesn't belong here */
        if ((ip->i_mode&IFMT) == IFBLK)
                ds.st_blksize = BLKDEV_IOSIZE;
        /* this doesn't belong here */
        if ((ip->i_mode&IFMT) == IFBLK)
                ds.st_blksize = BLKDEV_IOSIZE;
@@ -505,8 +508,8 @@ stat1(ip, ub)
                ds.st_blksize = MAXBSIZE;
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
                ds.st_blksize = MAXBSIZE;
        else
                ds.st_blksize = ip->i_fs->fs_bsize;
-       if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-               u.u_error = EFAULT;
+       ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
+       u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds));
 }
 
 /*
 }
 
 /*
@@ -734,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;
@@ -775,22 +777,22 @@ flock()
                return;
        }
        cmd = uap->how;
                return;
        }
        cmd = uap->how;
-       flags = u.u_pofile[uap->fd] & (SHLOCK|EXLOCK);
+       flags = u.u_pofile[uap->fd] & (UF_SHLOCK|UF_EXLOCK);
        if (cmd&FUNLOCK) {
                if (flags == 0) {
                        u.u_error = EINVAL;
                        return;
                }
                funlocki(fp->f_inode, flags);
        if (cmd&FUNLOCK) {
                if (flags == 0) {
                        u.u_error = EINVAL;
                        return;
                }
                funlocki(fp->f_inode, flags);
-               u.u_pofile[uap->fd] &= ~(SHLOCK|EXLOCK);
+               u.u_pofile[uap->fd] &= ~(UF_SHLOCK|UF_EXLOCK);
                return;
        }
        /*
         * No reason to write lock a file we've already
         * write locked, similarly with a read lock.
         */
                return;
        }
        /*
         * No reason to write lock a file we've already
         * write locked, similarly with a read lock.
         */
-       if ((flags&EXLOCK) && (cmd&FEXLOCK) ||
-           (flags&SHLOCK) && (cmd&FSHLOCK))
+       if ((flags&UF_EXLOCK) && (cmd&FEXLOCK) ||
+           (flags&UF_SHLOCK) && (cmd&FSHLOCK))
                return;
        u.u_pofile[uap->fd] = flocki(fp->f_inode, u.u_pofile[uap->fd], cmd);
 }
                return;
        u.u_pofile[uap->fd] = flocki(fp->f_inode, u.u_pofile[uap->fd], cmd);
 }
@@ -995,7 +997,7 @@ rename()
                 */
                if ((xp->i_mode&IFMT) == IFDIR) {
                        if (!dirempty(xp)) {
                 */
                if ((xp->i_mode&IFMT) == IFDIR) {
                        if (!dirempty(xp)) {
-                               u.u_error = EEXIST;     /* XXX */
+                               u.u_error = ENOTEMPTY;
                                goto bad;
                        }
                        if (!doingdirectory) {
                                goto bad;
                        }
                        if (!doingdirectory) {