diff options
author | attilio <attilio@FreeBSD.org> | 2013-03-09 02:51:51 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2013-03-09 02:51:51 +0000 |
commit | 16a80466e5837ad617b6b144297fd6069188b9b3 (patch) | |
tree | 68f0fe73cda2b8a8692af0e8e2b09c7e6d1a7ed1 /sys/kern/sys_process.c | |
parent | 640e058da3cee2710fd66a67abbb548aad74104e (diff) | |
parent | 72f7f3e528d2e900546a7ccbe16525b12d64dd44 (diff) | |
download | FreeBSD-src-16a80466e5837ad617b6b144297fd6069188b9b3.zip FreeBSD-src-16a80466e5837ad617b6b144297fd6069188b9b3.tar.gz |
MFC
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r-- | sys/kern/sys_process.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index e70e60e..7dc43c4 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include <sys/proc.h> #include <sys/vnode.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/sx.h> #include <sys/malloc.h> #include <sys/signalvar.h> @@ -381,7 +382,7 @@ ptrace_vm_entry(struct thread *td, struct proc *p, struct ptrace_vm_entry *pve) obj = entry->object.vm_object; if (obj != NULL) - VM_OBJECT_LOCK(obj); + VM_OBJECT_WLOCK(obj); } while (0); vm_map_unlock_read(map); @@ -394,9 +395,9 @@ ptrace_vm_entry(struct thread *td, struct proc *p, struct ptrace_vm_entry *pve) lobj = obj; for (tobj = obj; tobj != NULL; tobj = tobj->backing_object) { if (tobj != obj) - VM_OBJECT_LOCK(tobj); + VM_OBJECT_WLOCK(tobj); if (lobj != obj) - VM_OBJECT_UNLOCK(lobj); + VM_OBJECT_WUNLOCK(lobj); lobj = tobj; pve->pve_offset += tobj->backing_object_offset; } @@ -404,8 +405,8 @@ ptrace_vm_entry(struct thread *td, struct proc *p, struct ptrace_vm_entry *pve) if (vp != NULL) vref(vp); if (lobj != obj) - VM_OBJECT_UNLOCK(lobj); - VM_OBJECT_UNLOCK(obj); + VM_OBJECT_WUNLOCK(lobj); + VM_OBJECT_WUNLOCK(obj); if (vp != NULL) { freepath = NULL; |