summaryrefslogtreecommitdiff
path: root/sys/miscfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/miscfs')
-rw-r--r--sys/miscfs/procfs/procfs_subr.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/miscfs/procfs/procfs_subr.c b/sys/miscfs/procfs/procfs_subr.c
index 2acb3f4e704..9e3cec1802d 100644
--- a/sys/miscfs/procfs/procfs_subr.c
+++ b/sys/miscfs/procfs/procfs_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: procfs_subr.c,v 1.29 2009/04/02 18:43:08 oga Exp $ */
+/* $OpenBSD: procfs_subr.c,v 1.30 2009/04/22 18:57:56 deraadt Exp $ */
/* $NetBSD: procfs_subr.c,v 1.15 1996/02/12 15:01:42 christos Exp $ */
/*
@@ -40,7 +40,6 @@
#include <sys/systm.h>
#include <sys/time.h>
#include <sys/kernel.h>
-#include <sys/rwlock.h>
#include <sys/proc.h>
#include <sys/vnode.h>
#include <sys/malloc.h>
@@ -50,12 +49,13 @@
#include <miscfs/procfs/procfs.h>
static TAILQ_HEAD(, pfsnode) pfshead;
-struct rwlock pfs_vlock = RWLOCK_INITIALIZER("procfsl");
+struct lock pfs_vlock;
/*ARGSUSED*/
int
procfs_init(struct vfsconf *vfsp)
{
+ lockinit(&pfs_vlock, PVFS, "procfsl", 0, 0);
TAILQ_INIT(&pfshead);
return (0);
}
@@ -97,7 +97,9 @@ procfs_allocvp(struct mount *mp, struct vnode **vpp, pid_t pid, pfstype pfs_type
/*
* Lock the vp list, getnewvnode can sleep.
*/
- rw_enter_write(&pfs_vlock);
+ error = lockmgr(&pfs_vlock, LK_EXCLUSIVE, NULL);
+ if (error)
+ return (error);
loop:
TAILQ_FOREACH(pfs, &pfshead, list) {
vp = PFSTOV(pfs);
@@ -173,7 +175,7 @@ loop:
TAILQ_INSERT_TAIL(&pfshead, pfs, list);
uvm_vnp_setsize(vp, 0);
out:
- rw_exit_write(&pfs_vlock);
+ lockmgr(&pfs_vlock, LK_RELEASE, NULL);
return (error);
}