aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/uipc_usrreq.c
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2006-01-30 08:19:01 +0000
committerJeff Roberson <jeff@FreeBSD.org>2006-01-30 08:19:01 +0000
commit033eb86e5243d7238130f3bdd1b60972497929a3 (patch)
tree70168c607192f3742303e6727b937c41a0fd9d9d /sys/kern/uipc_usrreq.c
parent6923e33d954a985bbd878dffdb79c00ca9b98746 (diff)
downloadsrc-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.c7
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);