First of a few. Many thanks to mpi@ for adding the curproc assert's!
Two questions: - NOCRED: Best this should just be NULL ? - FSCRED: This is only AFAICT used for mounts Not 100% clear, but this could perhaps be done away with at the loss of some metadata (it just forces spec_open to open up given secure levels) in ufs. beck@, thoughts ? (i want to say the S word, but not sure if it is strictly true). diff --git sys/dev/softraid.c sys/dev/softraid.c index decea16cb24..2319b85b946 100644 --- sys/dev/softraid.c +++ sys/dev/softraid.c @@ -333,7 +333,7 @@ sr_meta_probe(struct sr_discipline *sd, dev_t *dt, int no_chunk) * XXX leaving dev open for now; move this to attach * and figure out the open/close dance for unwind. */ - error = VOP_OPEN(vn, FREAD | FWRITE, NOCRED, curproc); + error = VOP_OPEN(vn, FREAD | FWRITE, NOCRED); if (error) { DNPRINTF(SR_D_META,"%s: sr_meta_probe can't " "open %s\n", DEVNAME(sc), devname); @@ -1037,7 +1037,7 @@ sr_meta_native_bootprobe(struct sr_softc *sc, dev_t devno, } /* open device */ - error = VOP_OPEN(vn, FREAD, NOCRED, curproc); + error = VOP_OPEN(vn, FREAD, NOCRED); if (error) { DNPRINTF(SR_D_META, "%s: sr_meta_native_bootprobe open " "failed\n", DEVNAME(sc)); @@ -1093,7 +1093,7 @@ sr_meta_native_bootprobe(struct sr_softc *sc, dev_t devno, "allocate vnode for partition"); goto done; } - error = VOP_OPEN(vn, FREAD, NOCRED, curproc); + error = VOP_OPEN(vn, FREAD, NOCRED); if (error) { DNPRINTF(SR_D_META, "%s: sr_meta_native_bootprobe " "open failed, partition %d\n", @@ -2833,7 +2833,7 @@ sr_hotspare(struct sr_softc *sc, dev_t dev) sr_error(sc, "sr_hotspare: cannot allocate vnode"); goto done; } - if (VOP_OPEN(vn, FREAD | FWRITE, NOCRED, curproc)) { + if (VOP_OPEN(vn, FREAD | FWRITE, NOCRED)) { DNPRINTF(SR_D_META,"%s: sr_hotspare cannot open %s\n", DEVNAME(sc), devname); vput(vn); @@ -3147,7 +3147,7 @@ sr_rebuild_init(struct sr_discipline *sd, dev_t dev, int hotspare) DEVNAME(sc)); goto done; } - if (VOP_OPEN(vn, FREAD | FWRITE, NOCRED, curproc)) { + if (VOP_OPEN(vn, FREAD | FWRITE, NOCRED)) { DNPRINTF(SR_D_META,"%s: sr_ioctl_setstate can't " "open %s\n", DEVNAME(sc), devname); vput(vn); diff --git sys/dev/softraid_crypto.c sys/dev/softraid_crypto.c index fbe8358e5dd..354c6560180 100644 --- sys/dev/softraid_crypto.c +++ sys/dev/softraid_crypto.c @@ -665,7 +665,7 @@ sr_crypto_create_key_disk(struct sr_discipline *sd, sr_error(sc, "cannot open key disk %s", devname); goto done; } - if (VOP_OPEN(vn, FREAD | FWRITE, NOCRED, curproc)) { + if (VOP_OPEN(vn, FREAD | FWRITE, NOCRED)) { DNPRINTF(SR_D_META,"%s: sr_crypto_create_key_disk cannot " "open %s\n", DEVNAME(sc), devname); vput(vn); @@ -829,7 +829,7 @@ sr_crypto_read_key_disk(struct sr_discipline *sd, struct sr_crypto *mdd_crypto, sr_error(sc, "cannot open key disk %s", devname); goto done; } - if (VOP_OPEN(vn, FREAD, NOCRED, curproc)) { + if (VOP_OPEN(vn, FREAD, NOCRED)) { DNPRINTF(SR_D_META,"%s: sr_crypto_read_key_disk cannot " "open %s\n", DEVNAME(sc), devname); vput(vn); diff --git sys/isofs/cd9660/cd9660_vfsops.c sys/isofs/cd9660/cd9660_vfsops.c index b844a2ff709..601c761a000 100644 --- sys/isofs/cd9660/cd9660_vfsops.c +++ sys/isofs/cd9660/cd9660_vfsops.c @@ -240,7 +240,7 @@ iso_mountfs(struct vnode *devvp, struct mount *mp, struct proc *p, if (error) return (error); - error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, p); + error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED); if (error) return (error); diff --git sys/isofs/udf/udf_vfsops.c sys/isofs/udf/udf_vfsops.c index c0fc5068e08..2a5b7f03314 100644 --- sys/isofs/udf/udf_vfsops.c +++ sys/isofs/udf/udf_vfsops.c @@ -243,7 +243,7 @@ udf_mountfs(struct vnode *devvp, struct mount *mp, uint32_t lb, struct proc *p) if (error) return (error); - error = VOP_OPEN(devvp, FREAD, FSCRED, p); + error = VOP_OPEN(devvp, FREAD, FSCRED); if (error) return (error); diff --git sys/kern/kern_exec.c sys/kern/kern_exec.c index 3f3112b018f..7253bc3cc8e 100644 --- sys/kern/kern_exec.c +++ sys/kern/kern_exec.c @@ -172,7 +172,7 @@ check_exec(struct proc *p, struct exec_package *epp) } /* try to open it */ - if ((error = VOP_OPEN(vp, FREAD, p->p_ucred, p)) != 0) + if ((error = VOP_OPEN(vp, FREAD, p->p_ucred)) != 0) goto bad1; /* unlock vp, we need it unlocked from here */ @@ -630,7 +630,7 @@ sys_execve(struct proc *p, void *v, register_t *retval) closef(fp, p); break; } - if ((error = VOP_OPEN(vp, flags, cred, p)) != 0) { + if ((error = VOP_OPEN(vp, flags, cred)) != 0) { fdremove(p->p_fd, indx); closef(fp, p); vrele(vp); diff --git sys/kern/spec_vnops.c sys/kern/spec_vnops.c index f43ceda680f..9bd8f0dc09e 100644 --- sys/kern/spec_vnops.c +++ sys/kern/spec_vnops.c @@ -100,7 +100,7 @@ int spec_open(void *v) { struct vop_open_args *ap = v; - struct proc *p = ap->a_p; + struct proc *p = curproc; struct vnode *vp = ap->a_vp; struct vnode *bvp; dev_t bdev; @@ -721,7 +721,7 @@ spec_open_clone(struct vop_open_args *ap) VOP_UNLOCK(vp); error = cdevsw[major(vp->v_rdev)].d_open(cvp->v_rdev, ap->a_mode, - S_IFCHR, ap->a_p); + S_IFCHR, curproc); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); diff --git sys/kern/subr_disk.c sys/kern/subr_disk.c index f90d41d14a5..05e0ebba624 100644 --- sys/kern/subr_disk.c +++ sys/kern/subr_disk.c @@ -1731,7 +1731,7 @@ disk_readlabel(struct disklabel *dl, dev_t dev, char *errbuf, size_t errsize) return (errbuf); } - error = VOP_OPEN(vn, FREAD, NOCRED, curproc); + error = VOP_OPEN(vn, FREAD, NOCRED); if (error) { snprintf(errbuf, errsize, "cannot open disk, 0x%x/0x%x, error %d", diff --git sys/kern/tty_pty.c sys/kern/tty_pty.c index 2d51d9caf2c..dd9dca7539a 100644 --- sys/kern/tty_pty.c +++ sys/kern/tty_pty.c @@ -1022,7 +1022,7 @@ ptm_vn_open(struct nameidata *ndp) * Get us a fresh cred with root privileges. */ cred = crget(); - error = VOP_OPEN(vp, FREAD|FWRITE, cred, p); + error = VOP_OPEN(vp, FREAD|FWRITE, cred); if (!error) { /* update atime/mtime */ VATTR_NULL(&vattr); diff --git sys/kern/tty_tty.c sys/kern/tty_tty.c index d34aa0cee9f..c54912d715e 100644 --- sys/kern/tty_tty.c +++ sys/kern/tty_tty.c @@ -57,7 +57,7 @@ cttyopen(dev_t dev, int flag, int mode, struct proc *p) if (ttyvp == NULL) return (ENXIO); vn_lock(ttyvp, LK_EXCLUSIVE | LK_RETRY); - error = VOP_OPEN(ttyvp, flag, NOCRED, p); + error = VOP_OPEN(ttyvp, flag, NOCRED); VOP_UNLOCK(ttyvp); return (error); } diff --git sys/kern/vfs_syscalls.c sys/kern/vfs_syscalls.c index 43462b1496e..1bcbd6b45f0 100644 --- sys/kern/vfs_syscalls.c +++ sys/kern/vfs_syscalls.c @@ -1413,7 +1413,7 @@ sys_fhopen(struct proc *p, void *v, register_t *retval) if ((error = VOP_SETATTR(vp, &va, cred, p)) != 0) goto bad; } - if ((error = VOP_OPEN(vp, flags, cred, p)) != 0) + if ((error = VOP_OPEN(vp, flags, cred)) != 0) goto bad; if (flags & FWRITE) vp->v_writecount++; diff --git sys/kern/vfs_vnops.c sys/kern/vfs_vnops.c index 765b70a0947..071c2b8ed4f 100644 --- sys/kern/vfs_vnops.c +++ sys/kern/vfs_vnops.c @@ -174,7 +174,7 @@ vn_open(struct nameidata *ndp, int fmode, int cmode) if ((error = VOP_SETATTR(vp, &va, cred, p)) != 0) goto bad; } - if ((error = VOP_OPEN(vp, fmode, cred, p)) != 0) + if ((error = VOP_OPEN(vp, fmode, cred)) != 0) goto bad; if (vp->v_flag & VCLONED) { diff --git sys/kern/vfs_vops.c sys/kern/vfs_vops.c index 3d08b2ec5ca..2cf321d8d21 100644 --- sys/kern/vfs_vops.c +++ sys/kern/vfs_vops.c @@ -122,15 +122,12 @@ VOP_MKNOD(struct vnode *dvp, struct vnode **vpp, } int -VOP_OPEN(struct vnode *vp, int mode, struct ucred *cred, struct proc *p) +VOP_OPEN(struct vnode *vp, int mode, struct ucred *cred) { struct vop_open_args a; a.a_vp = vp; a.a_mode = mode; a.a_cred = cred; - a.a_p = p; - - KASSERT(p == curproc); if (vp->v_op->vop_open == NULL) return (EOPNOTSUPP); diff --git sys/miscfs/fifofs/fifo_vnops.c sys/miscfs/fifofs/fifo_vnops.c index 985b0e4cab4..105ad54c8fe 100644 --- sys/miscfs/fifofs/fifo_vnops.c +++ sys/miscfs/fifofs/fifo_vnops.c @@ -225,7 +225,7 @@ fifo_open(void *v) } return (0); bad: - VOP_CLOSE(vp, ap->a_mode, ap->a_cred, ap->a_p); + VOP_CLOSE(vp, ap->a_mode, ap->a_cred, curproc); return (error); } diff --git sys/miscfs/fuse/fuse_vnops.c sys/miscfs/fuse/fuse_vnops.c index 8f9a66f2c15..505297b513d 100644 --- sys/miscfs/fuse/fuse_vnops.c +++ sys/miscfs/fuse/fuse_vnops.c @@ -281,7 +281,7 @@ fusefs_open(void *v) * that no creation and truncation flags are passed to open. */ flags = OFLAGS(ap->a_mode) & ~(O_CREAT|O_EXCL|O_TRUNC); - error = fusefs_file_open(fmp, ip, fufh_type, flags, isdir, ap->a_p); + error = fusefs_file_open(fmp, ip, fufh_type, flags, isdir, curproc); return (error); } diff --git sys/msdosfs/msdosfs_vfsops.c sys/msdosfs/msdosfs_vfsops.c index 6b90195b5e5..01324f2bdd0 100644 --- sys/msdosfs/msdosfs_vfsops.c +++ sys/msdosfs/msdosfs_vfsops.c @@ -263,7 +263,7 @@ msdosfs_mountfs(struct vnode *devvp, struct mount *mp, struct proc *p, return (error); ronly = (mp->mnt_flag & MNT_RDONLY) != 0; - error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, p); + error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED); if (error) return (error); diff --git sys/nfs/nfs_vnops.c sys/nfs/nfs_vnops.c index d61f0a46847..c5076edd46c 100644 --- sys/nfs/nfs_vnops.c +++ sys/nfs/nfs_vnops.c @@ -472,25 +472,25 @@ nfs_open(void *v) } if (np->n_flag & NMODIFIED) { - error = nfs_vinvalbuf(vp, V_SAVE, ap->a_cred, ap->a_p); + error = nfs_vinvalbuf(vp, V_SAVE, ap->a_cred, curproc); if (error == EINTR) return (error); uvm_vnp_uncache(vp); NFS_INVALIDATE_ATTRCACHE(np); if (vp->v_type == VDIR) np->n_direofoffset = 0; - error = VOP_GETATTR(vp, &vattr, ap->a_cred, ap->a_p); + error = VOP_GETATTR(vp, &vattr, ap->a_cred, curproc); if (error) return (error); np->n_mtime = vattr.va_mtime; } else { - error = VOP_GETATTR(vp, &vattr, ap->a_cred, ap->a_p); + error = VOP_GETATTR(vp, &vattr, ap->a_cred, curproc); if (error) return (error); if (timespeccmp(&np->n_mtime, &vattr.va_mtime, !=)) { if (vp->v_type == VDIR) np->n_direofoffset = 0; - error = nfs_vinvalbuf(vp, V_SAVE, ap->a_cred, ap->a_p); + error = nfs_vinvalbuf(vp, V_SAVE, ap->a_cred, curproc); if (error == EINTR) return (error); uvm_vnp_uncache(vp); diff --git sys/ntfs/ntfs_vfsops.c sys/ntfs/ntfs_vfsops.c index d665f5db8df..ca083954f98 100644 --- sys/ntfs/ntfs_vfsops.c +++ sys/ntfs/ntfs_vfsops.c @@ -284,7 +284,7 @@ ntfs_mountfs(struct vnode *devvp, struct mount *mp, struct ntfs_args *argsp, if (error) return (error); - error = VOP_OPEN(devvp, FREAD, FSCRED, p); + error = VOP_OPEN(devvp, FREAD, FSCRED); if (error) return (error); diff --git sys/sys/vnode.h sys/sys/vnode.h index b2f0fa4b60c..b900e34285d 100644 --- sys/sys/vnode.h +++ sys/sys/vnode.h @@ -335,9 +335,8 @@ struct vop_open_args { struct vnode *a_vp; int a_mode; struct ucred *a_cred; - struct proc *a_p; }; -int VOP_OPEN(struct vnode *, int, struct ucred *, struct proc *); +int VOP_OPEN(struct vnode *, int, struct ucred *); struct vop_close_args { struct vnode *a_vp; diff --git sys/ufs/ext2fs/ext2fs_vfsops.c sys/ufs/ext2fs/ext2fs_vfsops.c index 3baea804c68..57b973433e0 100644 --- sys/ufs/ext2fs/ext2fs_vfsops.c +++ sys/ufs/ext2fs/ext2fs_vfsops.c @@ -513,7 +513,7 @@ ext2fs_mountfs(struct vnode *devvp, struct mount *mp, struct proc *p) return (error); ronly = (mp->mnt_flag & MNT_RDONLY) != 0; - error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, p); + error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED); if (error) return (error); diff --git sys/ufs/ffs/ffs_vfsops.c sys/ufs/ffs/ffs_vfsops.c index 8c780d5340b..9778ec7264d 100644 --- sys/ufs/ffs/ffs_vfsops.c +++ sys/ufs/ffs/ffs_vfsops.c @@ -723,7 +723,7 @@ ffs_mountfs(struct vnode *devvp, struct mount *mp, struct proc *p) return (error); ronly = (mp->mnt_flag & MNT_RDONLY) != 0; - error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, p); + error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED); if (error) return (error); diff --git sys/uvm/uvm_swap.c sys/uvm/uvm_swap.c index 27963259eba..65348470683 100644 --- sys/uvm/uvm_swap.c +++ sys/uvm/uvm_swap.c @@ -911,7 +911,7 @@ swap_on(struct proc *p, struct swapdev *sdp) * has already been opened when root was mounted (mountroot). */ if (vp != rootvp) { - if ((error = VOP_OPEN(vp, FREAD|FWRITE, p->p_ucred, p))) + if ((error = VOP_OPEN(vp, FREAD|FWRITE, p->p_ucred))) return (error); }