diff options
author | Jeff Roberson <jeff@FreeBSD.org> | 2006-01-30 08:19:01 +0000 |
---|---|---|
committer | Jeff Roberson <jeff@FreeBSD.org> | 2006-01-30 08:19:01 +0000 |
commit | 033eb86e5243d7238130f3bdd1b60972497929a3 (patch) | |
tree | 70168c607192f3742303e6727b937c41a0fd9d9d /sys/kern/uipc_usrreq.c | |
parent | 6923e33d954a985bbd878dffdb79c00ca9b98746 (diff) | |
download | src-033eb86e5243d7238130f3bdd1b60972497929a3.tar.gz src-033eb86e5243d7238130f3bdd1b60972497929a3.zip |
- Lock access to vrele() with VFS_LOCK_GIANT() rather than mtx_lock(&Giant).
Sponsored by: Isilon Systems, Inc.
Notes
Notes:
svn path=/head/; revision=155031
Diffstat (limited to 'sys/kern/uipc_usrreq.c')
-rw-r--r-- | sys/kern/uipc_usrreq.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index ba2c3a7eca0b..f13dcda31da5 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$"); #include <sys/lock.h> #include <sys/mac.h> #include <sys/mbuf.h> +#include <sys/mount.h> #include <sys/mutex.h> #include <sys/namei.h> #include <sys/proc.h> @@ -811,9 +812,11 @@ unp_detach(struct unpcb *unp) FREE(unp->unp_addr, M_SONAME); uma_zfree(unp_zone, unp); if (vp) { - mtx_lock(&Giant); + int vfslocked; + + vfslocked = VFS_LOCK_GIANT(vp->v_mount); vrele(vp); - mtx_unlock(&Giant); + VFS_UNLOCK_GIANT(vfslocked); } if (local_unp_rights) taskqueue_enqueue(taskqueue_thread, &unp_gc_task); |