diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2009-02-17 22:46:30 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2009-02-17 22:46:30 +0000 |
| commit | 48fb501ef250c1b8eba3d14661aed0186da7d2ca (patch) | |
| tree | 5e7217a42e5c928de0cbc78949a963d75a18e9dd /sys/fs/procfs | |
| parent | 33a5fd27094ed5081979f27bacbe82cce0f6722c (diff) | |
Notes
Diffstat (limited to 'sys/fs/procfs')
| -rw-r--r-- | sys/fs/procfs/procfs.c | 12 | ||||
| -rw-r--r-- | sys/fs/procfs/procfs_map.c | 5 |
2 files changed, 6 insertions, 11 deletions
diff --git a/sys/fs/procfs/procfs.c b/sys/fs/procfs/procfs.c index 56bc0cc03751..26bd18532f8e 100644 --- a/sys/fs/procfs/procfs.c +++ b/sys/fs/procfs/procfs.c @@ -70,17 +70,13 @@ procfs_doprocfile(PFS_FILL_ARGS) char *fullpath = "unknown"; char *freepath = NULL; struct vnode *textvp; - int err; + PROC_LOCK(p); textvp = p->p_textvp; - VI_LOCK(textvp); - vholdl(textvp); - err = vn_lock(textvp, LK_EXCLUSIVE | LK_INTERLOCK, td); - vdrop(textvp); - if (err) - return (err); + vhold(textvp); + PROC_UNLOCK(p); vn_fullpath(td, textvp, &fullpath, &freepath); - VOP_UNLOCK(textvp, 0, td); + vdrop(textvp); sbuf_printf(sb, "%s", fullpath); if (freepath) free(freepath, M_TEMP); diff --git a/sys/fs/procfs/procfs_map.c b/sys/fs/procfs/procfs_map.c index afcd59a46ea4..f7e053c0f1a9 100644 --- a/sys/fs/procfs/procfs_map.c +++ b/sys/fs/procfs/procfs_map.c @@ -190,10 +190,9 @@ procfs_doprocmap(PFS_FILL_ARGS) shadow_count = obj->shadow_count; VM_OBJECT_UNLOCK(obj); if (vp != NULL) { - vfslocked = VFS_LOCK_GIANT(vp->v_mount); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); vn_fullpath(td, vp, &fullpath, &freepath); - vput(vp); + vfslocked = VFS_LOCK_GIANT(vp->v_mount); + vrele(vp); VFS_UNLOCK_GIANT(vfslocked); } } else { |
