add proc pointers to appropriate VOP, vnode, and uio setup operations
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 16 Apr 1991 14:58:45 +0000 (06:58 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 16 Apr 1991 14:58:45 +0000 (06:58 -0800)
SCCS-vsn: sys/kern/vfs_syscalls.c 7.67

usr/src/sys/kern/vfs_syscalls.c

index bcc8eda..aa6233f 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)vfs_syscalls.c      7.66 (Berkeley) %G%
+ *     @(#)vfs_syscalls.c      7.67 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -143,7 +143,7 @@ update:
        /*
         * Mount the filesystem.
         */
        /*
         * Mount the filesystem.
         */
-       error = VFS_MOUNT(mp, uap->dir, uap->data, ndp);
+       error = VFS_MOUNT(mp, uap->dir, uap->data, ndp, p);
        if (mp->mnt_flag & MNT_UPDATE) {
                mp->mnt_flag &= ~MNT_UPDATE;
                vrele(vp);
        if (mp->mnt_flag & MNT_UPDATE) {
                mp->mnt_flag &= ~MNT_UPDATE;
                vrele(vp);
@@ -162,7 +162,7 @@ update:
        if (!error) {
                VOP_UNLOCK(vp);
                vfs_unlock(mp);
        if (!error) {
                VOP_UNLOCK(vp);
                vfs_unlock(mp);
-               error = VFS_START(mp, 0);
+               error = VFS_START(mp, 0, p);
        } else {
                vfs_remove(mp);
                free((caddr_t)mp, M_MOUNT);
        } else {
                vfs_remove(mp);
                free((caddr_t)mp, M_MOUNT);
@@ -214,15 +214,16 @@ unmount(p, uap, retval)
        }
        mp = vp->v_mount;
        vput(vp);
        }
        mp = vp->v_mount;
        vput(vp);
-       return (dounmount(mp, uap->flags));
+       return (dounmount(mp, uap->flags, p));
 }
 
 /*
  * Do an unmount.
  */
 }
 
 /*
  * Do an unmount.
  */
-dounmount(mp, flags)
+dounmount(mp, flags, p)
        register struct mount *mp;
        int flags;
        register struct mount *mp;
        int flags;
+       struct proc *p;
 {
        struct vnode *coveredvp;
        int error;
 {
        struct vnode *coveredvp;
        int error;
@@ -241,7 +242,7 @@ dounmount(mp, flags)
 #endif
        cache_purgevfs(mp);     /* remove cache entries for this file sys */
        if ((error = VFS_SYNC(mp, MNT_WAIT)) == 0 || (flags & MNT_FORCE))
 #endif
        cache_purgevfs(mp);     /* remove cache entries for this file sys */
        if ((error = VFS_SYNC(mp, MNT_WAIT)) == 0 || (flags & MNT_FORCE))
-               error = VFS_UNMOUNT(mp, flags);
+               error = VFS_UNMOUNT(mp, flags, p);
        mp->mnt_flag &= ~MNT_UNMOUNT;
        vfs_unbusy(mp);
        if (error) {
        mp->mnt_flag &= ~MNT_UNMOUNT;
        vfs_unbusy(mp);
        if (error) {
@@ -312,7 +313,7 @@ quotactl(p, uap, retval)
                return (error);
        mp = ndp->ni_vp->v_mount;
        vrele(ndp->ni_vp);
                return (error);
        mp = ndp->ni_vp->v_mount;
        vrele(ndp->ni_vp);
-       return (VFS_QUOTACTL(mp, uap->cmd, uap->uid, uap->arg));
+       return (VFS_QUOTACTL(mp, uap->cmd, uap->uid, uap->arg, p));
 }
 
 /*
 }
 
 /*
@@ -342,7 +343,7 @@ statfs(p, uap, retval)
        mp = ndp->ni_vp->v_mount;
        sp = &mp->mnt_stat;
        vrele(ndp->ni_vp);
        mp = ndp->ni_vp->v_mount;
        sp = &mp->mnt_stat;
        vrele(ndp->ni_vp);
-       if (error = VFS_STATFS(mp, sp))
+       if (error = VFS_STATFS(mp, sp, p))
                return (error);
        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
        return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
                return (error);
        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
        return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
@@ -369,7 +370,7 @@ fstatfs(p, uap, retval)
                return (error);
        mp = ((struct vnode *)fp->f_data)->v_mount;
        sp = &mp->mnt_stat;
                return (error);
        mp = ((struct vnode *)fp->f_data)->v_mount;
        sp = &mp->mnt_stat;
-       if (error = VFS_STATFS(mp, sp))
+       if (error = VFS_STATFS(mp, sp, p))
                return (error);
        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
        return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
                return (error);
        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
        return (copyout((caddr_t)sp, (caddr_t)uap->buf, sizeof(*sp)));
@@ -406,7 +407,7 @@ getfsstat(p, uap, retval)
                         */
                        if (((uap->flags & MNT_NOWAIT) == 0 ||
                            (uap->flags & MNT_WAIT)) &&
                         */
                        if (((uap->flags & MNT_NOWAIT) == 0 ||
                            (uap->flags & MNT_WAIT)) &&
-                           (error = VFS_STATFS(mp, sp))) {
+                           (error = VFS_STATFS(mp, sp, p))) {
                                mp = mp->mnt_prev;
                                continue;
                        }
                                mp = mp->mnt_prev;
                                continue;
                        }
@@ -448,7 +449,7 @@ fchdir(p, uap, retval)
        if (vp->v_type != VDIR)
                error = ENOTDIR;
        else
        if (vp->v_type != VDIR)
                error = ENOTDIR;
        else
-               error = VOP_ACCESS(vp, VEXEC, p->p_ucred);
+               error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p);
        VOP_UNLOCK(vp);
        if (error)
                return (error);
        VOP_UNLOCK(vp);
        if (error)
                return (error);
@@ -531,7 +532,7 @@ chdirec(ndp, p)
        if (vp->v_type != VDIR)
                error = ENOTDIR;
        else
        if (vp->v_type != VDIR)
                error = ENOTDIR;
        else
-               error = VOP_ACCESS(vp, VEXEC, p->p_ucred);
+               error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p);
        VOP_UNLOCK(vp);
        if (error)
                vrele(vp);
        VOP_UNLOCK(vp);
        if (error)
                vrele(vp);
@@ -669,7 +670,7 @@ mknod(p, uap, retval)
        vattr.va_rdev = uap->dev;
 out:
        if (!error) {
        vattr.va_rdev = uap->dev;
 out:
        if (!error) {
-               error = VOP_MKNOD(ndp, &vattr, p->p_ucred);
+               error = VOP_MKNOD(ndp, &vattr, p->p_ucred, p);
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == vp)
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == vp)
@@ -720,7 +721,7 @@ mkfifo(p, uap, retval)
        VATTR_NULL(&vattr);
        vattr.va_type = VFIFO;
        vattr.va_mode = (uap->fmode & 07777) &~ p->p_fd->fd_cmask;
        VATTR_NULL(&vattr);
        vattr.va_type = VFIFO;
        vattr.va_mode = (uap->fmode & 07777) &~ p->p_fd->fd_cmask;
-       return (VOP_MKNOD(ndp, &vattr, p->p_ucred));
+       return (VOP_MKNOD(ndp, &vattr, p->p_ucred, p));
 #endif /* FIFO */
 }
 
 #endif /* FIFO */
 }
 
@@ -765,7 +766,7 @@ link(p, uap, retval)
                error = EXDEV;
 out:
        if (!error) {
                error = EXDEV;
 out:
        if (!error) {
-               error = VOP_LINK(vp, ndp);
+               error = VOP_LINK(vp, ndp, p);
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == ndp->ni_vp)
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == ndp->ni_vp)
@@ -819,7 +820,7 @@ symlink(p, uap, retval)
        }
        VATTR_NULL(&vattr);
        vattr.va_mode = 0777 &~ p->p_fd->fd_cmask;
        }
        VATTR_NULL(&vattr);
        vattr.va_mode = 0777 &~ p->p_fd->fd_cmask;
-       error = VOP_SYMLINK(ndp, &vattr, target);
+       error = VOP_SYMLINK(ndp, &vattr, target, p);
 out:
        FREE(target, M_NAMEI);
        return (error);
 out:
        FREE(target, M_NAMEI);
        return (error);
@@ -868,7 +869,7 @@ unlink(p, uap, retval)
 #endif
 out:
        if (!error) {
 #endif
 out:
        if (!error) {
-               error = VOP_REMOVE(ndp);
+               error = VOP_REMOVE(ndp, p);
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == vp)
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == vp)
@@ -911,7 +912,7 @@ lseek(p, uap, retval)
 
        case L_XTND:
                if (error = VOP_GETATTR((struct vnode *)fp->f_data,
 
        case L_XTND:
                if (error = VOP_GETATTR((struct vnode *)fp->f_data,
-                   &vattr, cred))
+                   &vattr, cred, p))
                        return (error);
                fp->f_offset = uap->off + vattr.va_size;
                break;
                        return (error);
                fp->f_offset = uap->off + vattr.va_size;
                break;
@@ -968,7 +969,7 @@ saccess(p, uap, retval)
                if (uap->fmode & X_OK)
                        mode |= VEXEC;
                if ((mode & VWRITE) == 0 || (error = vn_writechk(vp)) == 0)
                if (uap->fmode & X_OK)
                        mode |= VEXEC;
                if ((mode & VWRITE) == 0 || (error = vn_writechk(vp)) == 0)
-                       error = VOP_ACCESS(vp, mode, cred);
+                       error = VOP_ACCESS(vp, mode, cred, p);
        }
        vput(vp);
 out1:
        }
        vput(vp);
 out1:
@@ -1000,7 +1001,7 @@ stat(p, uap, retval)
        ndp->ni_dirp = uap->fname;
        if (error = namei(ndp, p))
                return (error);
        ndp->ni_dirp = uap->fname;
        if (error = namei(ndp, p))
                return (error);
-       error = vn_stat(ndp->ni_vp, &sb);
+       error = vn_stat(ndp->ni_vp, &sb, p);
        vput(ndp->ni_vp);
        if (error)
                return (error);
        vput(ndp->ni_vp);
        if (error)
                return (error);
@@ -1031,7 +1032,7 @@ lstat(p, uap, retval)
        ndp->ni_dirp = uap->fname;
        if (error = namei(ndp, p))
                return (error);
        ndp->ni_dirp = uap->fname;
        if (error = namei(ndp, p))
                return (error);
-       error = vn_stat(ndp->ni_vp, &sb);
+       error = vn_stat(ndp->ni_vp, &sb, p);
        vput(ndp->ni_vp);
        if (error)
                return (error);
        vput(ndp->ni_vp);
        if (error)
                return (error);
@@ -1077,6 +1078,7 @@ readlink(p, uap, retval)
        auio.uio_offset = 0;
        auio.uio_rw = UIO_READ;
        auio.uio_segflg = UIO_USERSPACE;
        auio.uio_offset = 0;
        auio.uio_rw = UIO_READ;
        auio.uio_segflg = UIO_USERSPACE;
+       auio.uio_procp = p;
        auio.uio_resid = uap->count;
        error = VOP_READLINK(vp, &auio, p->p_ucred);
 out:
        auio.uio_resid = uap->count;
        error = VOP_READLINK(vp, &auio, p->p_ucred);
 out:
@@ -1116,7 +1118,7 @@ chflags(p, uap, retval)
        }
        VATTR_NULL(&vattr);
        vattr.va_flags = uap->flags;
        }
        VATTR_NULL(&vattr);
        vattr.va_flags = uap->flags;
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        vput(vp);
        return (error);
 out:
        vput(vp);
        return (error);
@@ -1149,7 +1151,7 @@ fchflags(p, uap, retval)
        }
        VATTR_NULL(&vattr);
        vattr.va_flags = uap->flags;
        }
        VATTR_NULL(&vattr);
        vattr.va_flags = uap->flags;
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        VOP_UNLOCK(vp);
        return (error);
 out:
        VOP_UNLOCK(vp);
        return (error);
@@ -1186,7 +1188,7 @@ chmod(p, uap, retval)
        }
        VATTR_NULL(&vattr);
        vattr.va_mode = uap->fmode & 07777;
        }
        VATTR_NULL(&vattr);
        vattr.va_mode = uap->fmode & 07777;
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        vput(vp);
        return (error);
 out:
        vput(vp);
        return (error);
@@ -1219,7 +1221,7 @@ fchmod(p, uap, retval)
        }
        VATTR_NULL(&vattr);
        vattr.va_mode = uap->fmode & 07777;
        }
        VATTR_NULL(&vattr);
        vattr.va_mode = uap->fmode & 07777;
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        VOP_UNLOCK(vp);
        return (error);
 out:
        VOP_UNLOCK(vp);
        return (error);
@@ -1258,7 +1260,7 @@ chown(p, uap, retval)
        VATTR_NULL(&vattr);
        vattr.va_uid = uap->uid;
        vattr.va_gid = uap->gid;
        VATTR_NULL(&vattr);
        vattr.va_uid = uap->uid;
        vattr.va_gid = uap->gid;
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        vput(vp);
        return (error);
 out:
        vput(vp);
        return (error);
@@ -1293,7 +1295,7 @@ fchown(p, uap, retval)
        VATTR_NULL(&vattr);
        vattr.va_uid = uap->uid;
        vattr.va_gid = uap->gid;
        VATTR_NULL(&vattr);
        vattr.va_uid = uap->uid;
        vattr.va_gid = uap->gid;
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        VOP_UNLOCK(vp);
        return (error);
 out:
        VOP_UNLOCK(vp);
        return (error);
@@ -1334,7 +1336,7 @@ utimes(p, uap, retval)
        VATTR_NULL(&vattr);
        vattr.va_atime = tv[0];
        vattr.va_mtime = tv[1];
        VATTR_NULL(&vattr);
        vattr.va_atime = tv[0];
        vattr.va_mtime = tv[1];
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        vput(vp);
        return (error);
 out:
        vput(vp);
        return (error);
@@ -1370,11 +1372,11 @@ truncate(p, uap, retval)
                goto out;
        }
        if ((error = vn_writechk(vp)) ||
                goto out;
        }
        if ((error = vn_writechk(vp)) ||
-           (error = VOP_ACCESS(vp, VWRITE, p->p_ucred)))
+           (error = VOP_ACCESS(vp, VWRITE, p->p_ucred, p)))
                goto out;
        VATTR_NULL(&vattr);
        vattr.va_size = uap->length;
                goto out;
        VATTR_NULL(&vattr);
        vattr.va_size = uap->length;
-       error = VOP_SETATTR(vp, &vattr, p->p_ucred);
+       error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 out:
        vput(vp);
        return (error);
 out:
        vput(vp);
        return (error);
@@ -1411,7 +1413,7 @@ ftruncate(p, uap, retval)
                goto out;
        VATTR_NULL(&vattr);
        vattr.va_size = uap->length;
                goto out;
        VATTR_NULL(&vattr);
        vattr.va_size = uap->length;
-       error = VOP_SETATTR(vp, &vattr, fp->f_cred);
+       error = VOP_SETATTR(vp, &vattr, fp->f_cred, p);
 out:
        VOP_UNLOCK(vp);
        return (error);
 out:
        VOP_UNLOCK(vp);
        return (error);
@@ -1436,7 +1438,7 @@ fsync(p, uap, retval)
                return (error);
        vp = (struct vnode *)fp->f_data;
        VOP_LOCK(vp);
                return (error);
        vp = (struct vnode *)fp->f_data;
        VOP_LOCK(vp);
-       error = VOP_FSYNC(vp, fp->f_flag, fp->f_cred, MNT_WAIT);
+       error = VOP_FSYNC(vp, fp->f_flag, fp->f_cred, MNT_WAIT, p);
        VOP_UNLOCK(vp);
        return (error);
 }
        VOP_UNLOCK(vp);
        return (error);
 }
@@ -1507,7 +1509,7 @@ rename(p, uap, retval)
                error = -1;
 out:
        if (!error) {
                error = -1;
 out:
        if (!error) {
-               error = VOP_RENAME(ndp, &tond);
+               error = VOP_RENAME(ndp, &tond, p);
        } else {
                VOP_ABORTOP(&tond);
                if (tdvp == tvp)
        } else {
                VOP_ABORTOP(&tond);
                if (tdvp == tvp)
@@ -1564,7 +1566,7 @@ mkdir(p, uap, retval)
        VATTR_NULL(&vattr);
        vattr.va_type = VDIR;
        vattr.va_mode = (uap->dmode & 0777) &~ p->p_fd->fd_cmask;
        VATTR_NULL(&vattr);
        vattr.va_type = VDIR;
        vattr.va_mode = (uap->dmode & 0777) &~ p->p_fd->fd_cmask;
-       error = VOP_MKDIR(ndp, &vattr);
+       error = VOP_MKDIR(ndp, &vattr, p);
        if (!error)
                vput(ndp->ni_vp);
        return (error);
        if (!error)
                vput(ndp->ni_vp);
        return (error);
@@ -1611,7 +1613,7 @@ rmdir(p, uap, retval)
                error = EBUSY;
 out:
        if (!error) {
                error = EBUSY;
 out:
        if (!error) {
-               error = VOP_RMDIR(ndp);
+               error = VOP_RMDIR(ndp, p);
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == vp)
        } else {
                VOP_ABORTOP(ndp);
                if (ndp->ni_dvp == vp)
@@ -1656,6 +1658,7 @@ getdirentries(p, uap, retval)
        auio.uio_iovcnt = 1;
        auio.uio_rw = UIO_READ;
        auio.uio_segflg = UIO_USERSPACE;
        auio.uio_iovcnt = 1;
        auio.uio_rw = UIO_READ;
        auio.uio_segflg = UIO_USERSPACE;
+       auio.uio_procp = p;
        auio.uio_resid = uap->count;
        VOP_LOCK(vp);
        auio.uio_offset = off = fp->f_offset;
        auio.uio_resid = uap->count;
        VOP_LOCK(vp);
        auio.uio_offset = off = fp->f_offset;
@@ -1716,7 +1719,7 @@ revoke(p, uap, retval)
                error = EINVAL;
                goto out;
        }
                error = EINVAL;
                goto out;
        }
-       if (error = VOP_GETATTR(vp, &vattr, p->p_ucred))
+       if (error = VOP_GETATTR(vp, &vattr, p->p_ucred, p))
                goto out;
        if (p->p_ucred->cr_uid != vattr.va_uid &&
            (error = suser(p->p_ucred, &p->p_acflag)))
                goto out;
        if (p->p_ucred->cr_uid != vattr.va_uid &&
            (error = suser(p->p_ucred, &p->p_acflag)))