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);
}