Index: gnu/ext2fs/ext2_extern.h =================================================================== RCS file: /home/ncvs/src/sys/gnu/ext2fs/ext2_extern.h,v retrieving revision 1.19 diff -u -r1.19 ext2_extern.h --- ext2_extern.h 1998/02/13 00:28:39 1.19 +++ ext2_extern.h 1998/05/25 23:06:31 @@ -61,7 +61,8 @@ int ext2_reallocblks __P((struct vop_reallocblks_args *)); int ext2_reclaim __P((struct vop_reclaim_args *)); void ext2_setblock __P((struct ext2_sb_info *, u_char *, daddr_t)); -int ext2_truncate __P((struct vnode *, off_t, int, struct ucred *, struct proc *)); +int ext2_truncate __P((struct vnode *, off_t, int, struct ucred *, + struct proc *)); int ext2_update __P((struct vnode *, struct timeval *, struct timeval *, int)); int ext2_valloc __P((struct vnode *, int, struct ucred *, struct vnode **)); int ext2_vfree __P((struct vnode *, ino_t, int)); @@ -75,7 +76,8 @@ int ext2_dirrewrite __P((struct inode *, struct inode *, struct componentname *)); int ext2_dirempty __P((struct inode *, ino_t, struct ucred *)); -int ext2_checkpath __P((struct inode *, struct inode *, struct ucred *)); +int ext2_checkpath __P((struct inode *, struct inode *, struct ucred *, + struct proc *)); struct ext2_group_desc * get_group_desc __P((struct mount * , unsigned int , struct buf ** )); void ext2_discard_prealloc __P((struct inode *)); Index: gnu/ext2fs/ext2_lookup.c =================================================================== RCS file: /home/ncvs/src/sys/gnu/ext2fs/ext2_lookup.c,v retrieving revision 1.16 diff -u -r1.16 ext2_lookup.c --- ext2_lookup.c 1998/02/06 12:13:02 1.16 +++ ext2_lookup.c 1998/05/25 23:04:55 @@ -583,7 +583,7 @@ cred->cr_uid != 0 && cred->cr_uid != dp->i_uid && VTOI(tdp)->i_uid != cred->cr_uid) { - vput(tdp); + vput(tdp, p); return (EPERM); } *vpp = tdp; @@ -645,7 +645,7 @@ } if (lockparent && (flags & ISLASTCN) && (error = vn_lock(pdp, LK_EXCLUSIVE, p))) { - vput(tdp); + vput(tdp, p); return (error); } *vpp = tdp; @@ -982,9 +982,10 @@ * The target is always vput before returning. */ int -ext2_checkpath(source, target, cred) +ext2_checkpath(source, target, cred, p) struct inode *source, *target; struct ucred *cred; + struct proc *p; { struct vnode *vp; int error, rootino, namlen; @@ -1023,7 +1024,7 @@ } if (dirbuf.dotdot_ino == rootino) break; - vput(vp); + vput(vp, p); if (error = VFS_VGET(vp->v_mount, dirbuf.dotdot_ino, &vp)) { vp = NULL; break; @@ -1034,7 +1035,7 @@ if (error == ENOTDIR) printf("checkpath: .. not a directory\n"); if (vp != NULL) - vput(vp); + vput(vp, p); return (error); } Index: gnu/ext2fs/ext2_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/gnu/ext2fs/ext2_vfsops.c,v retrieving revision 1.33 diff -u -r1.33 ext2_vfsops.c --- ext2_vfsops.c 1998/05/16 17:47:44 1.33 +++ ext2_vfsops.c 1998/05/31 04:53:02 @@ -519,14 +519,14 @@ if (error = bread(devvp, fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), (int)fs->s_blocksize, NOCRED, &bp)) { - vput(vp); + vput(vp, p); return (error); } ext2_ei2di((struct ext2_inode *) ((char *)bp->b_data + EXT2_INODE_SIZE * ino_to_fsbo(fs, ip->i_number)), &ip->i_din); brelse(bp); - vput(vp); + vput(vp, p); if (vp->v_mount != mountp) goto loop; } @@ -863,7 +863,7 @@ goto loop; if (error = VOP_FSYNC(vp, cred, waitfor, p)) allerror = error; - vput(vp); + vput(vp, p); } /* * Force stale file system control information to be flushed. @@ -969,7 +969,7 @@ * still zero, it will be unlinked and returned to the free * list by vput(). */ - vput(vp); + vput(vp, curproc); /* XXX */ brelse(bp); *vpp = NULL; return (error); @@ -1001,7 +1001,7 @@ * Note that the underlying vnode may have changed. */ if (error = ufs_vinit(mp, ext2_specop_p, ext2_fifoop_p, &vp)) { - vput(vp); + vput(vp, curproc); /* XXX */ *vpp = NULL; return (error); } Index: gnu/ext2fs/ext2_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/gnu/ext2fs/ext2_vnops.c,v retrieving revision 1.39 diff -u -r1.39 ext2_vnops.c --- ext2_vnops.c 1998/05/16 16:52:20 1.39 +++ ext2_vnops.c 1998/05/25 23:16:23 @@ -269,7 +269,7 @@ * checked to see if it is an alias of an existing entry in * the inode cache. */ - vput(*vpp); + vput(*vpp, curproc); (*vpp)->v_type = VNON; vgone(*vpp); *vpp = 0; @@ -410,9 +410,9 @@ if (tdvp == tvp) vrele(tdvp); else - vput(tdvp); + vput(tdvp, p); if (tvp) - vput(tvp); + vput(tvp, p); VOP_ABORTOP(fdvp, fcnp); /* XXX, why not in NFS? */ vrele(fdvp); vrele(fvp); @@ -448,8 +448,8 @@ /* Release destination completely. */ VOP_ABORTOP(tdvp, tcnp); - vput(tdvp); - vput(tvp); + vput(tdvp, p); + vput(tvp, p); /* * Delete source. There is another race now that everything @@ -479,9 +479,9 @@ if (fdvp == fvp) vrele(fdvp); else - vput(fdvp); + vput(fdvp, p); if (fvp != NULLVP) - vput(fvp); + vput(fvp, p); return (error); } if (error = vn_lock(fvp, LK_EXCLUSIVE, p)) @@ -552,8 +552,8 @@ if (error) /* write access check above */ goto bad; if (xp != NULL) - vput(tvp); - error = ext2_checkpath(ip, dp, tcnp->cn_cred); + vput(tvp, p); + error = ext2_checkpath(ip, dp, tcnp->cn_cred, p); if (error) goto out; if ((tcnp->cn_flags & SAVESTART) == 0) @@ -603,7 +603,7 @@ } goto bad; } - vput(tdvp); + vput(tdvp, p); } else { if (xp->i_dev != dp->i_dev || xp->i_dev != ip->i_dev) panic("ufs_rename: EXDEV"); @@ -657,7 +657,7 @@ dp->i_nlink--; dp->i_flag |= IN_CHANGE; } - vput(tdvp); + vput(tdvp, p); /* * Adjust the link count of the target to * reflect the dirrewrite above. If this is @@ -676,7 +676,7 @@ tcnp->cn_cred, tcnp->cn_proc); } xp->i_flag |= IN_CHANGE; - vput(tvp); + vput(tvp, p); xp = NULL; } @@ -759,16 +759,16 @@ xp->i_flag &= ~IN_RENAME; } if (dp) - vput(fdvp); + vput(fdvp, p); if (xp) - vput(fvp); + vput(fvp, p); vrele(ap->a_fvp); return (error); bad: if (xp) - vput(ITOV(xp)); - vput(ITOV(dp)); + vput(ITOV(xp), p); + vput(ITOV(dp), p); out: if (doingdirectory) ip->i_flag &= ~IN_RENAME; @@ -776,7 +776,7 @@ ip->i_nlink--; ip->i_flag |= IN_CHANGE; ip->i_flag &= ~IN_RENAME; - vput(fvp); + vput(fvp, p); } else vrele(fvp); return (error); @@ -874,7 +874,7 @@ (error = chkiq(ip, 1, ucp, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, dmode); - vput(tvp); + vput(tvp, curproc); return (error); } #endif @@ -886,7 +886,7 @@ (error = chkiq(ip, 1, cnp->cn_cred, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, dmode); - vput(tvp); + vput(tvp, curproc); return (error); } #endif @@ -952,7 +952,7 @@ if (error) { ip->i_nlink = 0; ip->i_flag |= IN_CHANGE; - vput(tvp); + vput(tvp, curproc); } else *ap->a_vpp = tvp; out: @@ -1063,7 +1063,7 @@ error = vn_rdwr(UIO_WRITE, vp, ap->a_target, len, (off_t)0, UIO_SYSSPACE, IO_NODELOCKED, ap->a_cnp->cn_cred, (int *)0, (struct proc *)0); - vput(vp); + vput(vp, curproc); return (error); } @@ -1140,7 +1140,7 @@ (error = chkiq(ip, 1, ucp, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, mode); - vput(tvp); + vput(tvp, curproc); return (error); } #endif @@ -1152,7 +1152,7 @@ (error = chkiq(ip, 1, cnp->cn_cred, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, mode); - vput(tvp); + vput(tvp, curproc); return (error); } #endif @@ -1192,7 +1192,7 @@ zfree(namei_zone, cnp->cn_pnbuf); ip->i_nlink = 0; ip->i_flag |= IN_CHANGE; - vput(tvp); + vput(tvp, curproc); return (error); } Index: i386/ibcs2/ibcs2_xenix.c =================================================================== RCS file: /home/ncvs/src/sys/i386/ibcs2/ibcs2_xenix.c,v retrieving revision 1.15 diff -u -r1.15 ibcs2_xenix.c --- ibcs2_xenix.c 1998/06/02 05:39:07 1.15 +++ ibcs2_xenix.c 1998/06/04 23:05:21 @@ -209,6 +209,6 @@ if ((flags & VWRITE) == 0 || (error = vn_writechk(vp)) == 0) error = VOP_ACCESS(vp, flags, cred, p); } - vput(vp); + vput(vp, p); return error; } Index: i386/ibcs2/imgact_coff.c =================================================================== RCS file: /home/ncvs/src/sys/i386/ibcs2/imgact_coff.c,v retrieving revision 1.30 diff -u -r1.30 imgact_coff.c --- imgact_coff.c 1998/02/11 01:46:47 1.30 +++ imgact_coff.c 1998/05/25 23:17:03 @@ -278,7 +278,7 @@ panic(__FUNCTION__ " vm_map_remove failed"); fail: - vput(nd.ni_vp); + vput(nd.ni_vp, p); zfree(namei_zone, nd.ni_cnd.cn_pnbuf); return error; } Index: i386/linux/linux_stats.c =================================================================== RCS file: /home/ncvs/src/sys/i386/linux/linux_stats.c,v retrieving revision 1.9 diff -u -r1.9 linux_stats.c --- linux_stats.c 1997/11/06 19:29:04 1.9 +++ linux_stats.c 1998/05/25 23:18:04 @@ -108,7 +108,7 @@ error = namei(&nd); if (!error) { error = vn_stat(nd.ni_vp, &buf, p); - vput(nd.ni_vp); + vput(nd.ni_vp, p); } if (!error) error = newstat_copyout(&buf, args->buf); @@ -150,20 +150,20 @@ if (dvp == vp) vrele(dvp); else - vput(dvp); + vput(dvp, p); error = vn_stat(vp, &sb, p); - vput(vp); + vput(vp, p); if (error) return (error); } else { error = vn_stat(dvp, &sb, p); - vput(dvp); + vput(dvp, p); if (error) { - vput(vp); + vput(vp, p); return (error); } error = vn_stat(vp, &sb1, p); - vput(vp); + vput(vp, p); if (error) return (error); sb.st_mode &= ~S_IFDIR; Index: isofs/cd9660/cd9660_lookup.c =================================================================== RCS file: /home/ncvs/src/sys/isofs/cd9660/cd9660_lookup.c,v retrieving revision 1.20 diff -u -r1.20 cd9660_lookup.c --- cd9660_lookup.c 1997/11/07 08:52:50 1.20 +++ cd9660_lookup.c 1998/05/25 23:18:13 @@ -360,7 +360,7 @@ } if (lockparent && (flags & ISLASTCN) && (error = vn_lock(pdp, LK_EXCLUSIVE, p))) { - vput(tdp); + vput(tdp, p); return (error); } *vpp = tdp; Index: isofs/cd9660/cd9660_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/isofs/cd9660/cd9660_vfsops.c,v retrieving revision 1.39 diff -u -r1.39 cd9660_vfsops.c --- cd9660_vfsops.c 1998/05/06 05:29:30 1.39 +++ cd9660_vfsops.c 1998/05/25 23:20:23 @@ -645,7 +645,7 @@ } ip = VTOI(nvp); if (ip->inode.iso_mode == 0) { - vput(nvp); + vput(nvp, curproc); *vpp = NULLVP; return (ESTALE); } @@ -724,14 +724,14 @@ lbn = lblkno(imp, ino); if (lbn >= imp->volume_space_size) { - vput(vp); + vput(vp, curproc); printf("fhtovp: lbn exceed volume space %d\n", lbn); return (ESTALE); } off = blkoff(imp, ino); if (off + ISO_DIRECTORY_RECORD_SIZE > imp->logical_block_size) { - vput(vp); + vput(vp, curproc); printf("fhtovp: crosses block boundary %d\n", off + ISO_DIRECTORY_RECORD_SIZE); return (ESTALE); @@ -741,7 +741,7 @@ lbn << (imp->im_bshift - DEV_BSHIFT), imp->logical_block_size, NOCRED, &bp); if (error) { - vput(vp); + vput(vp, curproc); brelse(bp); printf("fhtovp: bread error %d\n",error); return (error); @@ -750,7 +750,7 @@ if (off + isonum_711(isodir->length) > imp->logical_block_size) { - vput(vp); + vput(vp, curproc); if (bp != 0) brelse(bp); printf("fhtovp: directory crosses block boundary %d[off=%d/len=%d]\n", @@ -786,7 +786,7 @@ if (bp != 0) brelse(bp); if (error = cd9660_blkatoff(vp, (off_t)0, NULL, &bp)) { - vput(vp); + vput(vp, curproc); return (error); } isodir = (struct iso_directory_record *)bp->b_data; Index: kern/uipc_usrreq.c =================================================================== RCS file: /home/ncvs/src/sys/kern/uipc_usrreq.c,v retrieving revision 1.35 diff -u -r1.35 uipc_usrreq.c --- uipc_usrreq.c 1998/05/15 20:11:31 1.35 +++ uipc_usrreq.c 1998/05/25 23:21:39 @@ -560,7 +560,7 @@ if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); vrele(vp); return (EADDRINUSE); } @@ -569,7 +569,7 @@ vattr.va_mode = (ACCESSPERMS & ~p->p_fd->fd_cmask); VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE); error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); if (error) return (error); vp = nd.ni_vp; @@ -637,7 +637,7 @@ } error = unp_connect2(so, so2); bad: - vput(vp); + vput(vp, p); return (error); } Index: kern/vfs_cache.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_cache.c,v retrieving revision 1.37 diff -u -r1.37 vfs_cache.c --- vfs_cache.c 1997/12/19 23:18:37 1.37 +++ vfs_cache.c 1998/05/25 23:21:07 @@ -440,7 +440,7 @@ if (!error) { if (vpid == vdp->v_id) return (0); - vput(vdp); + vput(vdp, p); if (lockparent && pdp != vdp && (flags & ISLASTCN)) VOP_UNLOCK(pdp, 0, p); } Index: kern/vfs_lookup.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_lookup.c,v retrieving revision 1.27 diff -u -r1.27 vfs_lookup.c --- vfs_lookup.c 1998/04/08 18:31:57 1.27 +++ vfs_lookup.c 1998/05/25 23:24:17 @@ -213,12 +213,12 @@ } else cnp->cn_pnbuf[linklen] = '\0'; ndp->ni_pathlen += linklen; - vput(ndp->ni_vp); + vput(ndp->ni_vp, p); dp = ndp->ni_dvp; } zfree(namei_zone, cnp->cn_pnbuf); vrele(ndp->ni_dvp); - vput(ndp->ni_vp); + vput(ndp->ni_vp, p); ndp->ni_vp = NULL; return (error); } @@ -402,7 +402,7 @@ break; tdp = dp; dp = dp->v_mount->mnt_vnodecovered; - vput(tdp); + vput(tdp, p); VREF(dp); vn_lock(dp, LK_EXCLUSIVE | LK_RETRY, p); } @@ -428,7 +428,7 @@ (dp->v_mount->mnt_flag & MNT_UNION)) { tdp = dp; dp = dp->v_mount->mnt_vnodecovered; - vput(tdp); + vput(tdp, p); VREF(dp); vn_lock(dp, LK_EXCLUSIVE | LK_RETRY, p); goto unionlookup; @@ -491,7 +491,7 @@ vfs_unbusy(mp, p); if (error) goto bad2; - vput(dp); + vput(dp, p); ndp->ni_vp = dp = tdp; } @@ -558,7 +558,7 @@ VOP_UNLOCK(ndp->ni_dvp, 0, p); vrele(ndp->ni_dvp); bad: - vput(dp); + vput(dp, p); ndp->ni_vp = NULL; return (error); } @@ -709,7 +709,7 @@ VOP_UNLOCK(dvp, 0, p); vrele(dvp); bad: - vput(dp); + vput(dp, p); *vpp = NULL; return (error); } Index: kern/vfs_subr.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_subr.c,v retrieving revision 1.153 diff -u -r1.153 vfs_subr.c --- vfs_subr.c 1998/05/17 19:38:55 1.153 +++ vfs_subr.c 1998/05/26 01:21:08 @@ -1117,7 +1117,7 @@ vp = nvp; vp->v_type = VBLK; if ((nvp = checkalias(vp, dev, (struct mount *) 0))) { - vput(vp); + vput(vp, curproc); vp = nvp; } *vpp = vp; @@ -1195,7 +1195,8 @@ if (vp != NULLVP) { nvp->v_flag |= VALIASED; vp->v_flag |= VALIASED; - vput(vp); + vput(vp, curproc); /* XXX should use 'p' from above, but + that is faked too. */ } return (NULLVP); } @@ -1331,10 +1332,10 @@ } void -vput(vp) +vput(vp, p) struct vnode *vp; + struct proc *p; { - struct proc *p = curproc; /* XXX */ #ifdef DIAGNOSTIC if (vp == NULL) @@ -2359,7 +2360,7 @@ if ((error = VFS_VPTOFH(rvp, &nfs_pub.np_handle.fh_fid))) return (error); - vput(rvp); + vput(rvp, curproc); /* * If an indexfile was specified, pull it in. @@ -2467,7 +2468,7 @@ vm_object_page_clean(vp->v_object, 0, 0, TRUE); anyio = 1; } - vput(vp); + vput(vp, curproc); } } else { simple_unlock(&vp->v_interlock); Index: kern/vfs_syscalls.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_syscalls.c,v retrieving revision 1.101 diff -u -r1.101 vfs_syscalls.c --- vfs_syscalls.c 1998/05/11 03:55:28 1.101 +++ vfs_syscalls.c 1998/05/26 00:02:13 @@ -79,7 +79,7 @@ #include static int change_dir __P((struct nameidata *ndp, struct proc *p)); -static void checkdirs __P((struct vnode *olddp)); +static void checkdirs __P((struct vnode *olddp, struct proc *prc)); static int setfown __P((struct proc *, struct vnode *, uid_t, gid_t)); static int setfmode __P((struct proc *, struct vnode *, int)); static int setfflags __P((struct proc *, struct vnode *, int)); @@ -141,7 +141,7 @@ vp = nd.ni_vp; if (SCARG(uap, flags) & MNT_UPDATE) { if ((vp->v_flag & VROOT) == 0) { - vput(vp); + vput(vp, p); return (EINVAL); } mp = vp->v_mount; @@ -153,7 +153,7 @@ */ if ((SCARG(uap, flags) & MNT_RELOAD) && ((mp->mnt_flag & MNT_RDONLY) == 0)) { - vput(vp); + vput(vp, p); return (EOPNOTSUPP); /* Needs translation */ } mp->mnt_flag |= @@ -164,7 +164,7 @@ */ if (mp->mnt_stat.f_owner != p->p_ucred->cr_uid && (error = suser(p->p_ucred, &p->p_acflag))) { - vput(vp); + vput(vp, p); return (error); } /* @@ -173,13 +173,13 @@ */ if (p->p_ucred->cr_uid != 0) { if (SCARG(uap, flags) & MNT_EXPORTED) { - vput(vp); + vput(vp, p); return (EPERM); } SCARG(uap, flags) |= MNT_NOSUID | MNT_NODEV; } if (vfs_busy(mp, LK_NOWAIT, 0, p)) { - vput(vp); + vput(vp, p); return (EBUSY); } VOP_UNLOCK(vp, 0, p); @@ -192,7 +192,7 @@ if ((error = VOP_GETATTR(vp, &va, p->p_ucred, p)) || (va.va_uid != p->p_ucred->cr_uid && (error = suser(p->p_ucred, &p->p_acflag)))) { - vput(vp); + vput(vp, p); return (error); } /* @@ -201,7 +201,7 @@ */ if (p->p_ucred->cr_uid != 0) { if (SCARG(uap, flags) & MNT_EXPORTED) { - vput(vp); + vput(vp, p); return (EPERM); } SCARG(uap, flags) |= MNT_NOSUID | MNT_NODEV; @@ -209,7 +209,7 @@ if (error = vinvalbuf(vp, V_SAVE, p->p_ucred, p, 0, 0)) return (error); if (vp->v_type != VDIR) { - vput(vp); + vput(vp, p); return (ENOTDIR); } #ifdef COMPAT_43 @@ -224,25 +224,25 @@ if (vfsp->vfc_typenum == fstypenum) break; if (vfsp == NULL) { - vput(vp); + vput(vp, p); return (ENODEV); } strncpy(fstypename, vfsp->vfc_name, MFSNAMELEN); } else #endif /* COMPAT_43 */ if (error = copyinstr(SCARG(uap, type), fstypename, MFSNAMELEN, NULL)) { - vput(vp); + vput(vp, p); return (error); } for (vfsp = vfsconf; vfsp; vfsp = vfsp->vfc_next) if (!strcmp(vfsp->vfc_name, fstypename)) break; if (vfsp == NULL) { - vput(vp); + vput(vp, p); return (ENODEV); } if (vp->v_mountedhere != NULL) { - vput(vp); + vput(vp, p); return (EBUSY); } @@ -312,7 +312,7 @@ simple_lock(&mountlist_slock); CIRCLEQ_INSERT_TAIL(&mountlist, mp, mnt_list); simple_unlock(&mountlist_slock); - checkdirs(vp); + checkdirs(vp, p); VOP_UNLOCK(vp, 0, p); if ((mp->mnt_flag & MNT_RDONLY) == 0) error = vfs_allocate_syncvnode(mp); @@ -324,7 +324,7 @@ mp->mnt_vfc->vfc_refcount--; vfs_unbusy(mp, p); free((caddr_t)mp, M_MOUNT); - vput(vp); + vput(vp, p); } return (error); } @@ -335,8 +335,9 @@ * mounted. If so, replace them with the new mount point. */ static void -checkdirs(olddp) +checkdirs(olddp, prc) struct vnode *olddp; + struct proc *prc; { struct filedesc *fdp; struct vnode *newdp; @@ -364,7 +365,7 @@ VREF(newdp); rootvnode = newdp; } - vput(newdp); + vput(newdp, prc); } /* @@ -406,7 +407,7 @@ */ if ((mp->mnt_stat.f_owner != p->p_ucred->cr_uid) && (error = suser(p->p_ucred, &p->p_acflag))) { - vput(vp); + vput(vp, p); return (error); } @@ -414,7 +415,7 @@ * Don't allow unmounting the root file system. */ if (mp->mnt_flag & MNT_ROOTFS) { - vput(vp); + vput(vp, p); return (EINVAL); } @@ -422,10 +423,10 @@ * Must be the root of the filesystem */ if ((vp->v_flag & VROOT) == 0) { - vput(vp); + vput(vp, p); return (EINVAL); } - vput(vp); + vput(vp, p); return (dounmount(mp, SCARG(uap, flags), p)); } @@ -760,11 +761,11 @@ vfs_unbusy(mp, p); if (error) break; - vput(vp); + vput(vp, p); vp = tdp; } if (error) { - vput(vp); + vput(vp, p); return (error); } VOP_UNLOCK(vp, 0, p); @@ -854,7 +855,7 @@ else error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p); if (error) - vput(vp); + vput(vp, p); else VOP_UNLOCK(vp, 0, p); return (error); @@ -1046,18 +1047,18 @@ error = VOP_WHITEOUT(nd.ni_dvp, &nd.ni_cnd, CREATE); if (error) VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); } else { error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); } } else { VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); if (vp) vrele(vp); } @@ -1096,7 +1097,7 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); vrele(nd.ni_vp); return (EEXIST); } @@ -1105,7 +1106,7 @@ vattr.va_mode = (SCARG(uap, mode) & ALLPERMS) &~ p->p_fd->fd_cmask; VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE); error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); return (error); } @@ -1155,7 +1156,7 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); } } vrele(vp); @@ -1198,7 +1199,7 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); vrele(nd.ni_vp); error = EEXIST; goto out; @@ -1207,7 +1208,7 @@ vattr.va_mode = ACCESSPERMS &~ p->p_fd->fd_cmask; VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE); error = VOP_SYMLINK(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr, path); - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); ASSERT_VOP_UNLOCKED(nd.ni_dvp, "symlink"); ASSERT_VOP_UNLOCKED(nd.ni_vp, "symlink"); out: @@ -1240,7 +1241,7 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); if (nd.ni_vp) vrele(nd.ni_vp); return (EEXIST); @@ -1249,7 +1250,7 @@ VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE); if (error = VOP_WHITEOUT(nd.ni_dvp, &nd.ni_cnd, DELETE)) VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); ASSERT_VOP_UNLOCKED(nd.ni_dvp, "undelete"); ASSERT_VOP_UNLOCKED(nd.ni_vp, "undelete"); return (error); @@ -1303,9 +1304,9 @@ if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); if (vp != NULLVP) - vput(vp); + vput(vp, p); ASSERT_VOP_UNLOCKED(nd.ni_dvp, "unlink"); ASSERT_VOP_UNLOCKED(nd.ni_vp, "unlink"); return (error); @@ -1443,7 +1444,7 @@ if ((flags & VWRITE) == 0 || (error = vn_writechk(vp)) == 0) error = VOP_ACCESS(vp, flags, cred, p); } - vput(vp); + vput(vp, p); out1: cred->cr_uid = t_uid; cred->cr_groups[0] = t_gid; @@ -1479,7 +1480,7 @@ if (error = namei(&nd)) return (error); error = vn_stat(nd.ni_vp, &sb, p); - vput(nd.ni_vp); + vput(nd.ni_vp, p); if (error) return (error); cvtstat(&sb, &osb); @@ -1517,7 +1518,7 @@ return (error); vp = nd.ni_vp; error = vn_stat(vp, &sb, p); - vput(vp); + vput(vp, p); if (error) return (error); cvtstat(&sb, &osb); @@ -1582,7 +1583,7 @@ if (error = namei(&nd)) return (error); error = vn_stat(nd.ni_vp, &sb, p); - vput(nd.ni_vp); + vput(nd.ni_vp, p); if (error) return (error); error = copyout((caddr_t)&sb, (caddr_t)SCARG(uap, ub), sizeof (sb)); @@ -1618,7 +1619,7 @@ return (error); vp = nd.ni_vp; error = vn_stat(vp, &sb, p); - vput(vp); + vput(vp, p); if (error) return (error); error = copyout((caddr_t)&sb, (caddr_t)SCARG(uap, ub), sizeof (sb)); @@ -1672,7 +1673,7 @@ if (error = namei(&nd)) return (error); error = vn_stat(nd.ni_vp, &sb, p); - vput(nd.ni_vp); + vput(nd.ni_vp, p); if (error) return (error); cvtnstat(&sb, &nsb); @@ -1710,7 +1711,7 @@ return (error); vp = nd.ni_vp; error = vn_stat(vp, &sb, p); - vput(vp); + vput(vp, p); if (error) return (error); cvtnstat(&sb, &nsb); @@ -1744,7 +1745,7 @@ if (error = namei(&nd)) return (error); error = VOP_PATHCONF(nd.ni_vp, SCARG(uap, name), p->p_retval); - vput(nd.ni_vp); + vput(nd.ni_vp, p); return (error); } @@ -1793,7 +1794,7 @@ auio.uio_resid = SCARG(uap, count); error = VOP_READLINK(vp, &auio, p->p_ucred); } - vput(vp); + vput(vp, p); p->p_retval[0] = SCARG(uap, count) - auio.uio_resid; return (error); } @@ -2279,7 +2280,7 @@ vattr.va_size = SCARG(uap, length); error = VOP_SETATTR(vp, &vattr, p->p_ucred, p); } - vput(vp); + vput(vp, p); return (error); } @@ -2510,9 +2511,9 @@ if (tdvp == tvp) vrele(tdvp); else - vput(tdvp); + vput(tdvp, p); if (tvp) - vput(tvp); + vput(tvp, p); VOP_ABORTOP(fromnd.ni_dvp, &fromnd.ni_cnd); vrele(fromnd.ni_dvp); vrele(fvp); @@ -2565,7 +2566,7 @@ if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); vrele(vp); return (EEXIST); } @@ -2574,9 +2575,9 @@ vattr.va_mode = (SCARG(uap, mode) & ACCESSPERMS) &~ p->p_fd->fd_cmask; VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE); error = VOP_MKDIR(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); if (!error) - vput(nd.ni_vp); + vput(nd.ni_vp, p); ASSERT_VOP_UNLOCKED(nd.ni_dvp, "mkdir"); ASSERT_VOP_UNLOCKED(nd.ni_vp, "mkdir"); return (error); @@ -2634,9 +2635,9 @@ if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, p); if (vp != NULLVP) - vput(vp); + vput(vp, p); ASSERT_VOP_UNLOCKED(nd.ni_dvp, "rmdir"); ASSERT_VOP_UNLOCKED(nd.ni_vp, "rmdir"); return (error); @@ -2762,7 +2763,7 @@ */ error = VOP_GETATTR(vp, &va, fp->f_cred, p); if (va.va_flags & OPAQUE) { - vput(lvp); + vput(lvp, p); lvp = NULL; } } @@ -2770,7 +2771,7 @@ if (lvp != NULLVP) { error = VOP_OPEN(lvp, FREAD, fp->f_cred, p); if (error) { - vput(lvp); + vput(lvp, p); return (error); } VOP_UNLOCK(lvp, 0, p); @@ -2873,7 +2874,7 @@ */ error = VOP_GETATTR(vp, &va, fp->f_cred, p); if (va.va_flags & OPAQUE) { - vput(lvp); + vput(lvp, p); lvp = NULL; } } @@ -2881,7 +2882,7 @@ if (lvp != NULLVP) { error = VOP_OPEN(lvp, FREAD, fp->f_cred, p); if (error) { - vput(lvp); + vput(lvp, p); return (error); } VOP_UNLOCK(lvp, 0, p); Index: kern/vfs_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_vnops.c,v retrieving revision 1.57 diff -u -r1.57 vfs_vnops.c --- vfs_vnops.c 1998/05/07 04:58:25 1.57 +++ vfs_vnops.c 1998/05/26 00:03:29 @@ -97,7 +97,7 @@ VOP_LEASE(ndp->ni_dvp, p, cred, LEASE_WRITE); error = VOP_CREATE(ndp->ni_dvp, &ndp->ni_vp, &ndp->ni_cnd, vap); - vput(ndp->ni_dvp); + vput(ndp->ni_dvp, p); if (error) return (error); ASSERT_VOP_UNLOCKED(ndp->ni_dvp, "create"); @@ -109,7 +109,7 @@ if (ndp->ni_dvp == ndp->ni_vp) vrele(ndp->ni_dvp); else - vput(ndp->ni_dvp); + vput(ndp->ni_dvp, p); ndp->ni_dvp = NULL; vp = ndp->ni_vp; if (fmode & O_EXCL) { @@ -179,7 +179,7 @@ vp->v_writecount++; return (0); bad: - vput(vp); + vput(vp, p); return (error); } Index: miscfs/devfs/devfs_tree.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/devfs/devfs_tree.c,v retrieving revision 1.53 diff -u -r1.53 devfs_tree.c --- devfs_tree.c 1998/04/20 03:57:35 1.53 +++ devfs_tree.c 1998/05/26 00:04:30 @@ -986,7 +986,7 @@ dnp->by.Bdev.dev, (struct mount *)0)) { - vput(vn_p); + vput(vn_p, curproc); /* XXX p defined equal to curproc above */ vn_p = nvp; } break; @@ -996,7 +996,7 @@ dnp->by.Cdev.dev, (struct mount *)0)) { - vput(vn_p); + vput(vn_p, curproc); /* XXX p defined equal to curproc above */ vn_p = nvp; } break; @@ -1249,7 +1249,7 @@ #if 0 if ( VOP_OPEN(vn, FREAD, proc0.p_cred->pc_ucred, &proc0)) { - vput(vn); + vput(vn, curproc); return (NULL); } #endif @@ -1268,7 +1268,7 @@ #if 0 VOP_CLOSE(vn, 0, proc0.p_cred->pc_ucred, &proc0) ; #endif - vput(vn); + vput(vn, curproc); } /* Index: miscfs/devfs/devfs_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/devfs/devfs_vfsops.c,v retrieving revision 1.30 diff -u -r1.30 devfs_vfsops.c --- devfs_vfsops.c 1998/05/06 05:29:32 1.30 +++ devfs_vfsops.c 1998/05/26 00:04:53 @@ -288,7 +288,7 @@ error = VOP_FSYNC(vp, cred, waitfor, p); if (error) allerror = error; - vput(vp); + vput(vp, p); } #ifdef NOTYET else { Index: miscfs/devfs/devfs_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/devfs/devfs_vnops.c,v retrieving revision 1.55 diff -u -r1.55 devfs_vnops.c --- devfs_vnops.c 1998/05/07 04:58:32 1.55 +++ devfs_vnops.c 1998/05/26 00:07:06 @@ -1002,9 +1002,9 @@ if (tdvp == tvp) /* eh? */ vrele(tdvp); else - vput(tdvp); + vput(tdvp, p); if (tvp) - vput(tvp); + vput(tvp, p); VOP_ABORTOP(fdvp, fcnp); /* XXX, why not in NFS? */ vrele(fdvp); vrele(fvp); @@ -1076,8 +1076,8 @@ /* Release destination completely. */ VOP_ABORTOP(tdvp, tcnp); - vput(tdvp); - vput(tvp); + vput(tdvp, p); + vput(tvp, p); /* Delete source. */ VOP_ABORTOP(fdvp, fcnp); /*XXX*/ @@ -1133,20 +1133,20 @@ dev_free_name(fnp); fp->links--; /* we added one earlier*/ if (tdp) - vput(tdvp); + vput(tdvp, p); if (tp) - vput(fvp); + vput(fvp, p); vrele(ap->a_fvp); return (error); bad: if (tp) - vput(tvp); - vput(tdvp); + vput(tvp, p); + vput(tdvp, p); out: if (vn_lock(fvp, LK_EXCLUSIVE | LK_RETRY, p) == 0) { fp->links--; /* we added one earlier*/ - vput(fvp); + vput(fvp, p); } else vrele(fvp); return (error); @@ -1163,7 +1163,7 @@ } */ { DBPRINT(("mkdir\n")); - vput(ap->a_dvp); + vput(ap->a_dvp, curproc); return EINVAL; } @@ -1210,7 +1210,7 @@ } VOP_SETATTR(vp, ap->a_vap, ap->a_cnp->cn_cred, ap->a_cnp->cn_proc); *ap->a_vpp = NULL; - vput(vp); + vput(vp, curproc); return 0; } Index: miscfs/umapfs/umap_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/umapfs/umap_vfsops.c,v retrieving revision 1.22 diff -u -r1.22 umap_vfsops.c --- umap_vfsops.c 1998/05/06 05:29:36 1.22 +++ umap_vfsops.c 1998/05/26 00:08:28 @@ -134,7 +134,7 @@ ndp->ni_dvp = 0; if (lowerrootvp->v_type != VDIR) { - vput(lowerrootvp); + vput(lowerrootvp, p); return (EINVAL); } Index: miscfs/union/union_subr.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/union/union_subr.c,v retrieving revision 1.30 diff -u -r1.30 union_subr.c --- union_subr.c 1998/05/07 04:58:36 1.30 +++ union_subr.c 1998/05/26 00:13:56 @@ -481,7 +481,7 @@ if (dvp == uppervp) vrele(uppervp); else - vput(uppervp); + vput(uppervp, curproc); } if (lowervp) vrele(lowervp); @@ -830,7 +830,7 @@ VOP_LEASE(dvp, p, cn.cn_cred, LEASE_WRITE); error = VOP_MKDIR(dvp, vpp, &cn, &va); - vput(dvp); + vput(dvp, p); return (error); } @@ -937,7 +937,7 @@ if (un->un_dirvp == vp) vrele(un->un_dirvp); else - vput(un->un_dirvp); + vput(un->un_dirvp, p); vrele(vp); return (EEXIST); } @@ -957,13 +957,13 @@ vap->va_mode = cmode; VOP_LEASE(un->un_dirvp, p, cred, LEASE_WRITE); error = VOP_CREATE(un->un_dirvp, &vp, &cn, vap); - vput(un->un_dirvp); + vput(un->un_dirvp, p); if (error) return (error); error = VOP_OPEN(vp, fmode, cred, p); if (error) { - vput(vp); + vput(vp, p); return (error); } Index: miscfs/union/union_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/union/union_vfsops.c,v retrieving revision 1.29 diff -u -r1.29 union_vfsops.c --- union_vfsops.c 1998/05/06 05:29:37 1.29 +++ union_vfsops.c 1998/05/26 00:17:53 @@ -357,7 +357,7 @@ /* At this point the root vnode should have a single reference */ if (um_rootvp->v_usecount > 1) { - vput(um_rootvp); + vput(um_rootvp, p); return (EBUSY); } @@ -374,7 +374,7 @@ /* * Release reference on underlying root vnode */ - vput(um_rootvp); + vput(um_rootvp, p); /* * And blow it away for future re-use */ @@ -430,7 +430,7 @@ if (loselock) vrele(um->um_uppervp); else - vput(um->um_uppervp); + vput(um->um_uppervp, curproc); /* XXX p above is just curproc */ if (um->um_lowervp) vrele(um->um_lowervp); } else { Index: miscfs/union/union_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/union/union_vnops.c,v retrieving revision 1.57 diff -u -r1.57 union_vnops.c --- union_vnops.c 1998/05/07 04:58:38 1.57 +++ union_vnops.c 1998/05/26 01:24:25 @@ -140,7 +140,7 @@ */ tdvp = dvp; *dvpp = dvp = dvp->v_mount->mnt_vnodecovered; - vput(tdvp); + vput(tdvp, p); VREF(dvp); vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, p); } @@ -174,11 +174,11 @@ error = VFS_ROOT(mp, &tdvp); vfs_unbusy(mp, p); if (error) { - vput(dvp); + vput(dvp, p); return (error); } - vput(dvp); + vput(dvp, p); dvp = tdvp; } @@ -369,7 +369,7 @@ if (uppervp == upperdvp) vrele(uppervp); else - vput(uppervp); + vput(uppervp, p); uppervp = NULLVP; } *ap->a_vpp = lowervp; @@ -436,7 +436,7 @@ if (uerror) { if (lowervp != NULLVP) { - vput(lowervp); + vput(lowervp, p); lowervp = NULLVP; } error = uerror; @@ -453,7 +453,7 @@ if (error) { if (uppervp != NULLVP) - vput(uppervp); + vput(uppervp, p); if (lowervp != NULLVP) vrele(lowervp); } else { @@ -515,7 +515,7 @@ error = union_allocvp(ap->a_vpp, mp, NULLVP, NULLVP, cnp, vp, NULLVP, 1); if (error) - vput(vp); + vput(vp, p); vn_lock(ap->a_dvp, LK_EXCLUSIVE| LK_RETRY, p); return (error); } @@ -577,7 +577,7 @@ error = union_allocvp(ap->a_vpp, mp, NULLVP, NULLVP, cnp, vp, NULLVP, 1); if (error) - vput(vp); + vput(vp, p); vn_lock(ap->a_dvp, LK_EXCLUSIVE| LK_RETRY, p); } else { dun->un_flags |= UN_ULOCK; @@ -1224,7 +1224,7 @@ tdvp = un->un_uppervp; VREF(tdvp); un->un_flags |= UN_KLOCK; - vput(ap->a_tdvp); + vput(ap->a_tdvp, curproc); } if (tvp != NULLVP && tvp->v_op == union_vnodeop_p) { @@ -1235,7 +1235,7 @@ VREF(tvp); un->un_flags |= UN_KLOCK; } - vput(ap->a_tvp); + vput(ap->a_tvp, curproc); } return (VOP_RENAME(fdvp, fvp, ap->a_fcnp, tdvp, tvp, ap->a_tcnp)); @@ -1243,9 +1243,9 @@ bad: vrele(fdvp); vrele(fvp); - vput(tdvp); + vput(tdvp, curproc); if (tvp != NULLVP) - vput(tvp); + vput(tvp, curproc); return (error); } @@ -1281,7 +1281,7 @@ error = union_allocvp(ap->a_vpp, ap->a_dvp->v_mount, ap->a_dvp, NULLVP, cnp, vp, NULLVP, 1); if (error) - vput(vp); + vput(vp, p); vn_lock(ap->a_dvp, LK_EXCLUSIVE| LK_RETRY, p); return (error); Index: msdosfs/msdosfs_denode.c =================================================================== RCS file: /home/ncvs/src/sys/msdosfs/msdosfs_denode.c,v retrieving revision 1.38 diff -u -r1.38 msdosfs_denode.c --- msdosfs_denode.c 1998/05/17 18:09:28 1.38 +++ msdosfs_denode.c 1998/05/26 00:24:22 @@ -322,7 +322,7 @@ */ ldep->de_Name[0] = SLOT_DELETED; - vput(nvp); + vput(nvp, curproc); /* XXX p above is just a copy of curproc */ *depp = NULL; return (error); } Index: msdosfs/msdosfs_lookup.c =================================================================== RCS file: /home/ncvs/src/sys/msdosfs/msdosfs_lookup.c,v retrieving revision 1.25 diff -u -r1.25 msdosfs_lookup.c --- msdosfs_lookup.c 1998/05/18 10:24:26 1.25 +++ msdosfs_lookup.c 1998/05/26 01:27:02 @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -520,7 +521,7 @@ } if (lockparent && (flags & ISLASTCN) && (error = vn_lock(pdp, LK_EXCLUSIVE, p))) { - vput(DETOV(tdp)); + vput(DETOV(tdp), p); return (error); } *vpp = DETOV(tdp); @@ -825,7 +826,7 @@ break; } - vput(DETOV(dep)); + vput(DETOV(dep), curproc); brelse(bp); bp = NULL; /* NOTE: deget() clears dep on error */ @@ -838,7 +839,7 @@ if (error == ENOTDIR) printf("doscheckpath(): .. not a directory?\n"); if (dep != NULL) - vput(DETOV(dep)); + vput(DETOV(dep), curproc); return (error); } Index: msdosfs/msdosfs_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/msdosfs/msdosfs_vfsops.c,v retrieving revision 1.35 diff -u -r1.35 msdosfs_vfsops.c --- msdosfs_vfsops.c 1998/05/06 05:29:38 1.35 +++ msdosfs_vfsops.c 1998/05/26 00:29:38 @@ -139,7 +139,7 @@ pmp->pm_flags |= findwin95(VTODE(rootvp)) ? MSDOSFSMNT_LONGNAME : MSDOSFSMNT_SHORTNAME; - vput(rootvp); + vput(rootvp, curproc); } } return 0; @@ -312,7 +312,7 @@ vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p); error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p); if (error) { - vput(devvp); + vput(devvp, p); return (error); } VOP_UNLOCK(devvp, 0, p); Index: msdosfs/msdosfs_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/msdosfs/msdosfs_vnops.c,v retrieving revision 1.69 diff -u -r1.69 msdosfs_vnops.c --- msdosfs_vnops.c 1998/05/17 21:03:35 1.69 +++ msdosfs_vnops.c 1998/05/26 00:31:03 @@ -1009,9 +1009,9 @@ if (tdvp == tvp) vrele(tdvp); else - vput(tdvp); + vput(tdvp, p); if (tvp) - vput(tvp); + vput(tvp, p); VOP_ABORTOP(fdvp, fcnp); vrele(fdvp); vrele(fvp); @@ -1086,7 +1086,7 @@ if (error) /* write access check above */ goto bad; if (xp != NULL) - vput(tvp); + vput(tvp, p); /* * doscheckpath() vput()'s dp, * so we have to do a relookup afterwards @@ -1126,7 +1126,7 @@ error = removede(dp, xp); if (error) goto bad; - vput(tvp); + vput(tvp, p); xp = NULL; } @@ -1268,8 +1268,8 @@ VOP_UNLOCK(fvp, 0, p); bad: if (xp) - vput(tvp); - vput(tdvp); + vput(tvp, p); + vput(tdvp, p); out: ip->de_flag &= ~DE_RENAME; vrele(fdvp); Index: netinet/mlf_ipl.c =================================================================== RCS file: /home/ncvs/src/sys/netinet/mlf_ipl.c,v retrieving revision 1.7 diff -u -r1.7 mlf_ipl.c --- mlf_ipl.c 1998/05/07 04:58:45 1.7 +++ mlf_ipl.c 1998/05/26 00:32:23 @@ -245,9 +245,9 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, curproc); if (nd.ni_vp != NULLVP) - vput(nd.ni_vp); + vput(nd.ni_vp, curproc); } return 0; @@ -290,7 +290,7 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, curproc); vrele(nd.ni_vp); return (EEXIST); } @@ -300,7 +300,7 @@ vattr.va_rdev = (ipl_major << 8) | i; VOP_LEASE(nd.ni_dvp, curproc, curproc->p_ucred, LEASE_WRITE); error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); - vput(nd.ni_dvp); + vput(nd.ni_dvpm curproc); if (error) return error; } Index: nfs/nfs_nqlease.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_nqlease.c,v retrieving revision 1.37 diff -u -r1.37 nfs_nqlease.c --- nfs_nqlease.c 1998/05/31 20:08:52 1.37 +++ nfs_nqlease.c 1998/06/04 23:04:39 @@ -759,13 +759,13 @@ nfsm_reply(0); if (rdonly && flags == ND_WRITE) { error = EROFS; - vput(vp); + vput(vp, procp); nfsm_reply(0); } (void) nqsrv_getlease(vp, &nfsd->nd_duration, flags, slp, procp, nam, &cache, &frev, cred); error = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_V3FATTR + 4 * NFSX_UNSIGNED); nfsm_build(tl, u_int32_t *, 4 * NFSX_UNSIGNED); *tl++ = txdr_unsigned(cache); @@ -1006,7 +1006,7 @@ CIRCLEQ_INSERT_HEAD(&nmp->nm_timerhead, np, n_timer); } } - vput(vp); + vput(vp, curproc); nfsm_srvdone; } Index: nfs/nfs_serv.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_serv.c,v retrieving revision 1.68 diff -u -r1.68 nfs_serv.c --- nfs_serv.c 1998/05/31 20:08:52 1.68 +++ nfs_serv.c 1998/06/04 23:18:22 @@ -167,7 +167,7 @@ nfsrv_access(vp, VEXEC, cred, rdonly, procp, 0)) nfsmode &= ~testmode; getret = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_POSTOPATTR(1) + NFSX_UNSIGNED); nfsm_srvpostop_attr(getret, vap); nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED); @@ -213,7 +213,7 @@ } nqsrv_getl(vp, ND_READ); error = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_FATTR(nfsd->nd_flag & ND_NFSV3)); if (error) return (0); @@ -313,7 +313,7 @@ preat.va_ctime.tv_nsec != guard.tv_nsec)) error = NFSERR_NOT_SYNC; if (error) { - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_WCCDATA(v3)); nfsm_srvwcc_data(preat_ret, &preat, postat_ret, vap); return (0); @@ -342,7 +342,7 @@ if (!error) error = postat_ret; out: - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_WCCORFATTR(v3)); if (v3) { nfsm_srvwcc_data(preat_ret, &preat, postat_ret, vap); @@ -431,7 +431,7 @@ */ if (!error && ndp->ni_vp->v_mount != nfs_pub.np_mount) { - vput(nd.ni_vp); + vput(nd.ni_vp, procp); error = EPERM; } } @@ -458,7 +458,7 @@ error = VFS_VPTOFH(vp, &fhp->fh_fid); if (!error) error = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_SRVFH(v3) + NFSX_POSTOPORFATTR(v3) + NFSX_POSTOPATTR(v3)); if (error) { nfsm_srvpostop_attr(dirattr_ret, &dirattr); @@ -559,7 +559,7 @@ error = VOP_READLINK(vp, uiop, cred); out: getret = VOP_GETATTR(vp, &attr, cred, procp); - vput(vp); + vput(vp, procp); if (error) m_freem(mp3); nfsm_reply(NFSX_POSTOPATTR(v3) + NFSX_UNSIGNED); @@ -646,7 +646,7 @@ if (!error) error = getret; if (error) { - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_POSTOPATTR(v3)); nfsm_srvpostop_attr(getret, vap); return (0); @@ -721,14 +721,14 @@ if (!error) error = getret; m_freem(mreq); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_POSTOPATTR(v3)); nfsm_srvpostop_attr(getret, vap); return (0); } } else uiop->uio_resid = 0; - vput(vp); + vput(vp, procp); nfsm_srvfillattr(vap, fp); len -= uiop->uio_resid; tlen = nfsm_rndup(len); @@ -859,7 +859,7 @@ error = nfsrv_access(vp, VWRITE, cred, rdonly, procp, 1); } if (error) { - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_WCCDATA(v3)); nfsm_srvwcc_data(forat_ret, &forat, aftat_ret, vap); return (0); @@ -903,7 +903,7 @@ FREE((caddr_t)iv, M_TEMP); } aftat_ret = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); if (!error) error = aftat_ret; nfsm_reply(NFSX_PREOPATTR(v3) + NFSX_POSTOPORFATTR(v3) + @@ -1177,7 +1177,7 @@ m_freem(mrep); if (vp) { aftat_ret = VOP_GETATTR(vp, &va, cred, procp); - vput(vp); + vput(vp, procp); } /* @@ -1425,7 +1425,7 @@ vrele(nd.ni_startdir); nqsrv_getl(nd.ni_dvp, ND_WRITE); error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (!error) { nfsrv_object_create(nd.ni_vp); zfree(namei_zone, nd.ni_cnd.cn_pnbuf); @@ -1447,14 +1447,14 @@ vrele(nd.ni_startdir); zfree(namei_zone, nd.ni_cnd.cn_pnbuf); VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); nfsm_reply(0); return (error); } else vap->va_rdev = (dev_t)rdev; nqsrv_getl(nd.ni_dvp, ND_WRITE); error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (error) { vrele(nd.ni_startdir); nfsm_reply(0); @@ -1471,7 +1471,7 @@ zfree(namei_zone, nd.ni_cnd.cn_pnbuf); if (nd.ni_cnd.cn_flags & ISSYMLINK) { vrele(nd.ni_dvp); - vput(nd.ni_vp); + vput(nd.ni_vp, procp); VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); error = EINVAL; nfsm_reply(0); @@ -1480,7 +1480,7 @@ vrele(nd.ni_startdir); zfree(namei_zone, nd.ni_cnd.cn_pnbuf); VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); error = ENXIO; } vp = nd.ni_vp; @@ -1491,7 +1491,7 @@ if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); if (vap->va_size != -1) { error = nfsrv_access(vp, VWRITE, cred, @@ -1505,7 +1505,7 @@ procp); } if (error) - vput(vp); + vput(vp, procp); } } if (!error) { @@ -1514,7 +1514,7 @@ error = VFS_VPTOFH(vp, &fhp->fh_fid); if (!error) error = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); } if (v3) { if (exclusive_flag && !error && @@ -1547,9 +1547,9 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (nd.ni_vp) - vput(nd.ni_vp); + vput(nd.ni_vp, procp); return (error); } @@ -1608,7 +1608,7 @@ zfree(namei_zone, nd.ni_cnd.cn_pnbuf); error = NFSERR_BADTYPE; VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); goto out; } VATTR_NULL(vap); @@ -1628,7 +1628,7 @@ zfree(namei_zone, nd.ni_cnd.cn_pnbuf); error = EEXIST; VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); goto out; } vap->va_type = vtyp; @@ -1636,7 +1636,7 @@ vrele(nd.ni_startdir); nqsrv_getl(nd.ni_dvp, ND_WRITE); error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (!error) zfree(namei_zone, nd.ni_cnd.cn_pnbuf); } else { @@ -1644,12 +1644,12 @@ vrele(nd.ni_startdir); zfree(namei_zone, nd.ni_cnd.cn_pnbuf); VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); goto out; } nqsrv_getl(nd.ni_dvp, ND_WRITE); error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (error) { vrele(nd.ni_startdir); goto out; @@ -1664,7 +1664,7 @@ goto out; if (nd.ni_cnd.cn_flags & ISSYMLINK) { vrele(nd.ni_dvp); - vput(nd.ni_vp); + vput(nd.ni_vp, procp); VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); error = EINVAL; } @@ -1677,7 +1677,7 @@ error = VFS_VPTOFH(vp, &fhp->fh_fid); if (!error) error = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); } diraft_ret = VOP_GETATTR(dirp, &diraft, cred, procp); vrele(dirp); @@ -1699,9 +1699,9 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (nd.ni_vp) - vput(nd.ni_vp); + vput(nd.ni_vp, procp); return (error); } @@ -1775,9 +1775,9 @@ if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (vp != NULLVP); - vput(vp); + vput(vp, procp); } if (dirp && v3) { diraft_ret = VOP_GETATTR(dirp, &diraft, cred, procp); @@ -1949,9 +1949,9 @@ if (tdvp == tvp) vrele(tdvp); else - vput(tdvp); + vput(tdvp, procp); if (tvp) - vput(tvp); + vput(tvp, procp); VOP_ABORTOP(fromnd.ni_dvp, &fromnd.ni_cnd); vrele(fromnd.ni_dvp); vrele(fvp); @@ -2071,13 +2071,13 @@ nqsrv_getl(vp, ND_WRITE); nqsrv_getl(xp, ND_WRITE); error = VOP_LINK(nd.ni_dvp, vp, &nd.ni_cnd); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); } else { VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (nd.ni_vp) vrele(nd.ni_vp); } @@ -2176,14 +2176,14 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); vrele(nd.ni_vp); error = EEXIST; goto out; } nqsrv_getl(nd.ni_dvp, ND_WRITE); error = VOP_SYMLINK(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap, pathcp); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (error) vrele(nd.ni_startdir); else { @@ -2201,7 +2201,7 @@ if (!error) error = VOP_GETATTR(nd.ni_vp, vap, cred, procp); - vput(nd.ni_vp); + vput(nd.ni_vp, procp); } } else vrele(nd.ni_startdir); @@ -2234,7 +2234,7 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (nd.ni_vp) vrele(nd.ni_vp); if (pathcp) @@ -2311,14 +2311,14 @@ if (nd.ni_dvp == vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); vrele(vp); error = EEXIST; goto out; } nqsrv_getl(nd.ni_dvp, ND_WRITE); error = VOP_MKDIR(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap); - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (!error) { vp = nd.ni_vp; bzero((caddr_t)fhp, sizeof(nfh)); @@ -2326,7 +2326,7 @@ error = VFS_VPTOFH(vp, &fhp->fh_fid); if (!error) error = VOP_GETATTR(vp, vap, cred, procp); - vput(vp); + vput(vp, procp); } out: if (dirp) { @@ -2353,7 +2353,7 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (nd.ni_vp) vrele(nd.ni_vp); return (error); @@ -2439,9 +2439,9 @@ if (nd.ni_dvp == nd.ni_vp) vrele(nd.ni_dvp); else - vput(nd.ni_dvp); + vput(nd.ni_dvp, procp); if (vp != NULLVP) - vput(vp); + vput(vp, procp); if (dirp) { diraft_ret = VOP_GETATTR(dirp, &diraft, cred, procp); vrele(dirp); @@ -2547,7 +2547,7 @@ &rdonly, (nfsd->nd_flag & ND_KERBAUTH), TRUE); if (!error && vp->v_type != VDIR) { error = ENOTDIR; - vput(vp); + vput(vp, procp); } if (error) { nfsm_reply(NFSX_UNSIGNED); @@ -2566,7 +2566,7 @@ if (!error) error = nfsrv_access(vp, VEXEC, cred, rdonly, procp, 0); if (error) { - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_POSTOPATTR(v3)); nfsm_srvpostop_attr(getret, &at); return (0); @@ -2811,7 +2811,7 @@ &rdonly, (nfsd->nd_flag & ND_KERBAUTH), TRUE); if (!error && vp->v_type != VDIR) { error = ENOTDIR; - vput(vp); + vput(vp, procp); } if (error) { nfsm_reply(NFSX_UNSIGNED); @@ -2829,7 +2829,7 @@ error = nfsrv_access(vp, VEXEC, cred, rdonly, procp, 0); } if (error) { - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_V3POSTOPATTR); nfsm_srvpostop_attr(getret, &at); return (0); @@ -2934,7 +2934,7 @@ nfsm_srvpostop_attr(getret, &at); return (0); } - vput(nvp); + vput(nvp, procp); dirlen = len = NFSX_V3POSTOPATTR + NFSX_V3COOKIEVERF + 2 * NFSX_UNSIGNED; nfsm_reply(cnt); @@ -2961,14 +2961,14 @@ nfhp->fh_fsid = nvp->v_mount->mnt_stat.f_fsid; if (VFS_VPTOFH(nvp, &nfhp->fh_fid)) { - vput(nvp); + vput(nvp, procp); goto invalid; } if (VOP_GETATTR(nvp, vap, cred, procp)) { - vput(nvp); + vput(nvp, procp); goto invalid; } - vput(nvp); + vput(nvp, procp); /* * If either the dircount or maxcount will be @@ -3126,7 +3126,7 @@ } error = VOP_FSYNC(vp, cred, MNT_WAIT, procp); aft_ret = VOP_GETATTR(vp, &aft, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_V3WCCDATA + NFSX_V3WRITEVERF); nfsm_srvwcc_data(for_ret, &bfor, aft_ret, &aft); if (!error) { @@ -3183,7 +3183,7 @@ sf = &statfs; error = VFS_STATFS(vp->v_mount, sf, procp); getret = VOP_GETATTR(vp, &at, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_POSTOPATTR(v3) + NFSX_STATFS(v3)); if (v3) nfsm_srvpostop_attr(getret, &at); @@ -3263,7 +3263,7 @@ maxfsize = (u_quad_t)0x80000000 * sb.f_bsize - 1; getret = VOP_GETATTR(vp, &at, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_V3POSTOPATTR + NFSX_V3FSINFO); nfsm_srvpostop_attr(getret, &at); nfsm_build(sip, struct nfsv3_fsinfo *, NFSX_V3FSINFO); @@ -3341,7 +3341,7 @@ if (!error) error = VOP_PATHCONF(vp, _PC_NO_TRUNC, ¬runc); getret = VOP_GETATTR(vp, &at, cred, procp); - vput(vp); + vput(vp, procp); nfsm_reply(NFSX_V3POSTOPATTR + NFSX_V3PATHCONF); nfsm_srvpostop_attr(getret, &at); if (error) Index: nfs/nfs_subs.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_subs.c,v retrieving revision 1.61 diff -u -r1.61 nfs_subs.c --- nfs_subs.c 1998/05/31 20:08:55 1.61 +++ nfs_subs.c 1998/06/04 23:04:41 @@ -1625,7 +1625,7 @@ VOP_UNLOCK(ndp->ni_dvp, 0, p); if (!pubflag) { vrele(ndp->ni_dvp); - vput(ndp->ni_vp); + vput(ndp->ni_vp, p); ndp->ni_vp = NULL; error = EINVAL; break; @@ -1671,7 +1671,7 @@ } else cnp->cn_pnbuf[linklen] = '\0'; ndp->ni_pathlen += linklen; - vput(ndp->ni_vp); + vput(ndp->ni_vp, p); dp = ndp->ni_dvp; /* * Check if root directory should replace current directory. @@ -1910,11 +1910,11 @@ */ if (exflags & MNT_EXKERB) { if (!kerbflag) { - vput(*vpp); + vput(*vpp, curproc); /* XXX p above is just a curproc shadow */ return (NFSERR_AUTHERR | AUTH_TOOWEAK); } } else if (kerbflag) { - vput(*vpp); + vput(*vpp, curproc); /* XXX p above is just a curproc shadow */ return (NFSERR_AUTHERR | AUTH_TOOWEAK); } else if (cred->cr_uid == 0 || (exflags & MNT_EXPORTANON)) { cred->cr_uid = credanon->cr_uid; Index: nfs/nfs_syscalls.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_syscalls.c,v retrieving revision 1.41 diff -u -r1.41 nfs_syscalls.c --- nfs_syscalls.c 1998/05/31 20:08:55 1.41 +++ nfs_syscalls.c 1998/06/04 23:04:42 @@ -152,7 +152,7 @@ bzero((caddr_t)&fh, sizeof(fh)); fh.fh_fsid = vp->v_mount->mnt_stat.f_fsid; error = VFS_VPTOFH(vp, &fh.fh_fid); - vput(vp); + vput(vp, p); if (error) return (error); error = copyout((caddr_t)&fh, (caddr_t)uap->fhp, sizeof (fh)); @@ -220,7 +220,7 @@ if ((nd.ni_vp->v_flag & VROOT) == 0) error = EINVAL; nmp = VFSTONFS(nd.ni_vp->v_mount); - vput(nd.ni_vp); + vput(nd.ni_vp, p); if (error) return (error); if ((nmp->nm_state & NFSSTA_MNTD) && Index: nfs/nfs_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_vfsops.c,v retrieving revision 1.71 diff -u -r1.71 nfs_vfsops.c --- nfs_vfsops.c 1998/06/01 11:07:16 1.71 +++ nfs_vfsops.c 1998/06/04 23:04:43 @@ -314,7 +314,7 @@ bcopy(mp->mnt_stat.f_mntfromname, sbp->f_mntfromname, MNAMELEN); } nfsm_reqdone; - vput(vp); + vput(vp, p); crfree(cred); return (error); } @@ -969,7 +969,7 @@ return(error); vp = NFSTOV(np); if (vp->v_usecount > 2) { - vput(vp); + vput(vp, p); return (EBUSY); } @@ -981,7 +981,7 @@ (void) tsleep((caddr_t)&lbolt, PSOCK, "nfsdism", 0); error = vflush(mp, vp, flags); if (error) { - vput(vp); + vput(vp, p); nmp->nm_state &= ~NFSSTA_DISMINPROG; return (error); } @@ -996,7 +996,7 @@ /* * There are two reference counts and one lock to get rid of here. */ - vput(vp); + vput(vp, p); vrele(vp); vgone(vp); nfs_disconnect(nmp); @@ -1069,7 +1069,7 @@ error = VOP_FSYNC(vp, cred, waitfor, p); if (error) allerror = error; - vput(vp); + vput(vp, p); } return (allerror); } Index: nfs/nfs_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_vnops.c,v retrieving revision 1.104 diff -u -r1.104 nfs_vnops.c --- nfs_vnops.c 1998/06/01 10:59:23 1.104 +++ nfs_vnops.c 1998/06/04 23:04:44 @@ -842,7 +842,7 @@ } cache_purge(newvp); } - vput(newvp); + vput(newvp, p); if (lockparent && dvp != newvp && (flags & ISLASTCN)) VOP_UNLOCK(dvp, 0, p); } @@ -905,7 +905,7 @@ newvp = NFSTOV(np); if (lockparent && (flags & ISLASTCN) && (error = vn_lock(dvp, LK_EXCLUSIVE, p))) { - vput(newvp); + vput(newvp, p); return (error); } } else if (NFS_CMPFH(np, fhp, fhsize)) { @@ -1271,7 +1271,7 @@ nfsm_mtofh(dvp, newvp, v3, gotvp); if (!gotvp) { if (newvp) { - vput(newvp); + vput(newvp, cnp->cn_proc); newvp = (struct vnode *)0; } error = nfs_lookitup(dvp, cnp->cn_nameptr, @@ -1285,7 +1285,7 @@ nfsm_reqdone; if (error) { if (newvp) - vput(newvp); + vput(newvp, cnp->cn_proc); } else { if (cnp->cn_flags & MAKEENTRY) cache_enter(dvp, newvp, cnp); @@ -1317,7 +1317,7 @@ error = nfs_mknodrpc(ap->a_dvp, &newvp, ap->a_cnp, ap->a_vap); if (!error) - vput(newvp); + vput(newvp, ap->a_cnp->cn_proc); return (error); } @@ -1400,7 +1400,7 @@ nfsm_mtofh(dvp, newvp, v3, gotvp); if (!gotvp) { if (newvp) { - vput(newvp); + vput(newvp, cnp->cn_proc); newvp = (struct vnode *)0; } error = nfs_lookitup(dvp, cnp->cn_nameptr, @@ -1418,7 +1418,7 @@ goto again; } if (newvp) - vput(newvp); + vput(newvp, cnp->cn_proc); } else if (v3 && (fmode & O_EXCL)) error = nfs_setattrrpc(newvp, vap, cnp->cn_cred, cnp->cn_proc); if (!error) { @@ -1590,7 +1590,7 @@ */ if (tvp && tvp->v_usecount > 1 && !VTONFS(tvp)->n_sillyrename && tvp->v_type != VDIR && !nfs_sillyrename(tdvp, tvp, tcnp)) { - vput(tvp); + vput(tvp, tcnp->cn_proc); tvp = NULL; } @@ -1607,9 +1607,9 @@ if (tdvp == tvp) vrele(tdvp); else - vput(tdvp); + vput(tdvp, tcnp->cn_proc); if (tvp) - vput(tvp); + vput(tvp, tcnp->cn_proc); vrele(fdvp); vrele(fvp); /* @@ -1793,7 +1793,7 @@ } nfsm_reqdone; if (newvp) - vput(newvp); + vput(newvp, cnp->cn_proc); zfree(namei_zone, cnp->cn_pnbuf); VTONFS(dvp)->n_flag |= NMODIFIED; if (!wccflag) @@ -2405,7 +2405,7 @@ if (newvp == vp) vrele(newvp); else - vput(newvp); + vput(newvp, cnp->cn_proc); newvp = NULLVP; } return (error); @@ -2532,7 +2532,7 @@ if (newvp == dvp) vrele(newvp); else - vput(newvp); + vput(newvp, procp); return (ENOENT); } } else @@ -2545,7 +2545,7 @@ if (newvp == dvp) vrele(newvp); else - vput(newvp); + vput(newvp, procp); } else *npp = np; } Index: sys/vnode.h =================================================================== RCS file: /home/ncvs/src/sys/sys/vnode.h,v retrieving revision 1.71 diff -u -r1.71 vnode.h --- vnode.h 1998/05/11 03:55:16 1.71 +++ vnode.h 1998/05/26 01:04:43 @@ -536,7 +536,7 @@ struct vnode * checkalias __P((struct vnode *vp, dev_t nvp_rdev, struct mount *mp)); -void vput __P((struct vnode *vp)); +void vput __P((struct vnode *vp, struct proc *p)); void vrele __P((struct vnode *vp)); void vref __P((struct vnode *vp)); void vbusy __P((struct vnode *vp)); Index: ufs/ffs/ffs_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_vfsops.c,v retrieving revision 1.82 diff -u -r1.82 ffs_vfsops.c --- ffs_vfsops.c 1998/05/18 06:38:18 1.82 +++ ffs_vfsops.c 1998/05/31 04:06:43 @@ -318,7 +318,7 @@ accessmode |= VWRITE; vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p); if (error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p)) { - vput(devvp); + vput(devvp, p); return (error); } VOP_UNLOCK(devvp, 0, p); @@ -552,14 +552,14 @@ bread(devvp, fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), (int)fs->fs_bsize, NOCRED, &bp); if (error) { - vput(vp); + vput(vp, p); return (error); } ip->i_din = *((struct dinode *)bp->b_data + ino_to_fsbo(fs, ip->i_number)); ip->i_effnlink = ip->i_nlink; brelse(bp); - vput(vp); + vput(vp, p); simple_lock(&mntvnode_slock); } simple_unlock(&mntvnode_slock); @@ -1123,7 +1123,7 @@ * list by vput(). */ brelse(bp); - vput(vp); + vput(vp, curproc); /* XXX */ *vpp = NULL; return (error); } @@ -1140,7 +1140,7 @@ */ error = ufs_vinit(mp, ffs_specop_p, ffs_fifoop_p, &vp); if (error) { - vput(vp); + vput(vp, curproc); /* XXX */ *vpp = NULL; return (error); } Index: ufs/ufs/ufs_extern.h =================================================================== RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_extern.h,v retrieving revision 1.23 diff -u -r1.23 ufs_extern.h --- ufs_extern.h 1998/03/08 09:59:24 1.23 +++ ufs_extern.h 1998/05/31 04:08:24 @@ -64,7 +64,8 @@ int ufs_check_export __P((struct mount *, struct ufid *, struct sockaddr *, struct vnode **, int *exflagsp, struct ucred **)); -int ufs_checkpath __P((struct inode *, struct inode *, struct ucred *)); +int ufs_checkpath __P((struct inode *, struct inode *, struct ucred *, + struct proc *)); void ufs_dirbad __P((struct inode *, doff_t, char *)); int ufs_dirbadentry __P((struct vnode *, struct direct *, int)); int ufs_dirempty __P((struct inode *, ino_t, struct ucred *)); Index: ufs/ufs/ufs_lookup.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_lookup.c,v retrieving revision 1.24 diff -u -r1.24 ufs_lookup.c --- ufs_lookup.c 1998/04/15 12:27:31 1.24 +++ ufs_lookup.c 1998/05/31 04:40:55 @@ -465,7 +465,7 @@ cred->cr_uid != 0 && cred->cr_uid != dp->i_uid && VTOI(tdp)->i_uid != cred->cr_uid) { - vput(tdp); + vput(tdp, p); return (EPERM); } *vpp = tdp; @@ -527,7 +527,7 @@ } if (lockparent && (flags & ISLASTCN) && (error = vn_lock(pdp, LK_EXCLUSIVE, p))) { - vput(tdp); + vput(tdp, p); return (error); } *vpp = tdp; @@ -1020,9 +1020,10 @@ * The target is always vput before returning. */ int -ufs_checkpath(source, target, cred) +ufs_checkpath(source, target, cred, p) struct inode *source, *target; struct ucred *cred; + struct proc *p; { struct vnode *vp; int error, rootino, namlen; @@ -1068,7 +1069,7 @@ } if (dirbuf.dotdot_ino == rootino) break; - vput(vp); + vput(vp, p); error = VFS_VGET(vp->v_mount, dirbuf.dotdot_ino, &vp); if (error) { vp = NULL; @@ -1080,6 +1081,6 @@ if (error == ENOTDIR) printf("checkpath: .. not a directory\n"); if (vp != NULL) - vput(vp); + vput(vp, p); return (error); } Index: ufs/ufs/ufs_quota.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_quota.c,v retrieving revision 1.21 diff -u -r1.21 ufs_quota.c --- ufs_quota.c 1998/03/30 09:56:27 1.21 +++ ufs_quota.c 1998/05/26 01:10:54 @@ -431,10 +431,10 @@ goto again; error = getinoquota(VTOI(vp)); if (error) { - vput(vp); + vput(vp, p); break; } - vput(vp); + vput(vp, p); if (vp->v_mntvnodes.le_next != nextvp || vp->v_mount != mp) goto again; } @@ -478,7 +478,7 @@ dq = ip->i_dquot[type]; ip->i_dquot[type] = NODQUOT; dqrele(vp, dq); - vput(vp); + vput(vp, p); if (vp->v_mntvnodes.le_next != nextvp || vp->v_mount != mp) goto again; } @@ -675,7 +675,7 @@ if (dq != NODQUOT && (dq->dq_flags & DQ_MOD)) dqsync(vp, dq); } - vput(vp); + vput(vp, p); simple_lock(&mntvnode_slock); if (vp->v_mntvnodes.le_next != nextvp) goto again; Index: ufs/ufs/ufs_vfsops.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_vfsops.c,v retrieving revision 1.11 diff -u -r1.11 ufs_vfsops.c --- ufs_vfsops.c 1997/10/12 20:26:27 1.11 +++ ufs_vfsops.c 1998/05/31 04:55:36 @@ -214,7 +214,9 @@ } ip = VTOI(nvp); if (ip->i_mode == 0 || ip->i_gen != ufhp->ufid_gen) { - vput(nvp); + vput(nvp, curproc); /* XXX hard to remove curproc use, due + to fhtovp being called all over the + place */ *vpp = NULLVP; return (ESTALE); } Index: ufs/ufs/ufs_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_vnops.c,v retrieving revision 1.85 diff -u -r1.85 ufs_vnops.c --- ufs_vnops.c 1998/05/17 11:53:46 1.85 +++ ufs_vnops.c 1998/05/31 05:00:35 @@ -215,7 +215,7 @@ * checked to see if it is an alias of an existing entry in * the inode cache. */ - vput(*vpp); + vput(*vpp, ap->a_cnp->cn_proc); (*vpp)->v_type = VNON; vgone(*vpp); *vpp = 0; @@ -892,9 +892,9 @@ if (tdvp == tvp) vrele(tdvp); else - vput(tdvp); + vput(tdvp, p); if (tvp) - vput(tvp); + vput(tvp, p); VOP_ABORTOP(fdvp, fcnp); /* XXX, why not in NFS? */ vrele(fdvp); vrele(fvp); @@ -930,8 +930,8 @@ /* Release destination completely. */ VOP_ABORTOP(tdvp, tcnp); - vput(tdvp); - vput(tvp); + vput(tdvp, p); + vput(tvp, p); /* * Delete source. There is another race now that everything @@ -961,8 +961,8 @@ if (fdvp == fvp) vrele(fdvp); else - vput(fdvp); - vput(fvp); + vput(fdvp, p); + vput(fvp, p); return (error); } if (error = vn_lock(fvp, LK_EXCLUSIVE, p)) @@ -1037,8 +1037,8 @@ if (error) /* write access check above */ goto bad; if (xp != NULL) - vput(tvp); - error = ufs_checkpath(ip, dp, tcnp->cn_cred); + vput(tvp, p); + error = ufs_checkpath(ip, dp, tcnp->cn_cred, p); if (error) goto out; if ((tcnp->cn_flags & SAVESTART) == 0) @@ -1094,7 +1094,7 @@ goto bad; } VN_POLLEVENT(tdvp, POLLWRITE); - vput(tdvp); + vput(tdvp, p); } else { if (xp->i_dev != dp->i_dev || xp->i_dev != ip->i_dev) panic("ufs_rename: EXDEV"); @@ -1164,9 +1164,9 @@ tcnp->cn_cred, tcnp->cn_proc)) != 0) goto bad; } - vput(tdvp); + vput(tdvp, p); VN_POLLEVENT(tvp, POLLNLINK); /* XXX this right? */ - vput(tvp); + vput(tvp, p); xp = NULL; } @@ -1221,16 +1221,16 @@ xp->i_flag &= ~IN_RENAME; } if (dp) - vput(fdvp); + vput(fdvp, p); if (xp) - vput(fvp); + vput(fvp, p); vrele(ap->a_fvp); return (error); bad: if (xp) - vput(ITOV(xp)); - vput(ITOV(dp)); + vput(ITOV(xp), p); + vput(ITOV(dp), p); out: if (doingdirectory) ip->i_flag &= ~IN_RENAME; @@ -1239,7 +1239,7 @@ ip->i_nlink--; ip->i_flag |= IN_CHANGE; ip->i_flag &= ~IN_RENAME; - vput(fvp); + vput(fvp, p); } else vrele(fvp); return (error); @@ -1330,7 +1330,9 @@ (error = chkiq(ip, 1, ucp, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, dmode); - vput(tvp); + vput(tvp, cnp->cn_proc); /* XXX cnp->cn_proc might be + dangerous in the call from + from union_relookup? */ return (error); } #endif @@ -1342,7 +1344,7 @@ (error = chkiq(ip, 1, cnp->cn_cred, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, dmode); - vput(tvp); + vput(tvp, cnp->cn_proc); /* XXX see previous vput() */ return (error); } #endif @@ -1425,7 +1427,7 @@ ip->i_effnlink = 0; ip->i_nlink = 0; ip->i_flag |= IN_CHANGE; - vput(tvp); + vput(tvp, cnp->cn_proc); /* XXX see previous vput() */ } out: zfree(namei_zone, cnp->cn_pnbuf); @@ -1543,7 +1545,7 @@ error = vn_rdwr(UIO_WRITE, vp, ap->a_target, len, (off_t)0, UIO_SYSSPACE, IO_NODELOCKED, ap->a_cnp->cn_cred, (int *)0, (struct proc *)0); - vput(vp); + vput(vp, ap->a_cnp->cn_proc); /* XXX probably OK */ return (error); } @@ -2079,7 +2081,7 @@ (error = chkiq(ip, 1, ucp, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, mode); - vput(tvp); + vput(tvp, curproc); return (error); } #endif @@ -2091,7 +2093,7 @@ (error = chkiq(ip, 1, cnp->cn_cred, 0))) { zfree(namei_zone, cnp->cn_pnbuf); UFS_VFREE(tvp, ip->i_number, mode); - vput(tvp); + vput(tvp, curproc); return (error); } #endif @@ -2136,7 +2138,7 @@ ip->i_effnlink = 0; ip->i_nlink = 0; ip->i_flag |= IN_CHANGE; - vput(tvp); + vput(tvp, curproc); return (error); } Index: vm/vm_fault.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_fault.c,v retrieving revision 1.83 diff -u -r1.83 vm_fault.c --- vm_fault.c 1998/05/04 03:01:43 1.83 +++ vm_fault.c 1998/05/26 01:16:23 @@ -145,7 +145,7 @@ } unlock_map(fs); if (fs->vp != NULL) { - vput(fs->vp); + vput(fs->vp, curproc); fs->vp = NULL; } } Index: vm/vm_pageout.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_pageout.c,v retrieving revision 1.122 diff -u -r1.122 vm_pageout.c --- vm_pageout.c 1998/06/02 05:39:13 1.122 +++ vm_pageout.c 1998/06/04 00:37:54 @@ -799,7 +799,7 @@ if (m->queue != PQ_INACTIVE) { if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; - vput(vp); + vput(vp, curproc); continue; } @@ -809,7 +809,7 @@ * the queue so that statistics are more correct if we don't. */ if (m->busy || (m->flags & PG_BUSY)) { - vput(vp); + vput(vp, curproc); continue; } @@ -823,7 +823,7 @@ splx(s); if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; - vput(vp); + vput(vp, curproc); continue; } } @@ -836,7 +836,7 @@ */ written = vm_pageout_clean(m); if (vp) - vput(vp); + vput(vp, curproc); maxlaunder -= written; } Index: vm/vm_swap.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_swap.c,v retrieving revision 1.53 diff -u -r1.53 vm_swap.c --- vm_swap.c 1998/02/23 08:22:44 1.53 +++ vm_swap.c 1998/05/26 01:18:56 @@ -297,7 +297,7 @@ vp1->v_type = VBLK; if ((nvp = checkalias(vp1, swapdev, (struct mount *) 0))) { - vput(vp1); + vput(vp1, p); vp1 = nvp; } swapdev_vp = vp1;