diff options
-rw-r--r-- | sys/kern/kern_ktrace.c | 7 | ||||
-rw-r--r-- | sys/kern/uipc_usrreq.c | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index fbb0b0d..7f42f67 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include <sys/mutex.h> #include <sys/mac.h> #include <sys/malloc.h> +#include <sys/mount.h> #include <sys/namei.h> #include <sys/proc.h> #include <sys/unistd.h> @@ -830,9 +831,11 @@ ktrops(td, p, ops, facs, vp) mtx_unlock(&ktrace_mtx); PROC_UNLOCK(p); if (tracevp != NULL) { - mtx_lock(&Giant); + int vfslocked; + + vfslocked = VFS_LOCK_GIANT(tracevp->v_mount); vrele(tracevp); - mtx_unlock(&Giant); + VFS_UNLOCK_GIANT(vfslocked); } if (tracecred != NULL) crfree(tracecred); diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index ba2c3a7..f13dcda 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); |