diff options
Diffstat (limited to 'sys/vm/vm_pageout.c')
-rw-r--r-- | sys/vm/vm_pageout.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 8e3c39f..dab4ae2 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -1214,8 +1214,13 @@ rescan0: /* * get the process size */ - size = vmspace_resident_count(p->p_vmspace) + - vmspace_swap_count(p->p_vmspace); + if (!vm_map_trylock_read(&p->p_vmspace->vm_map)) { + PROC_UNLOCK(p); + continue; + } + size = vmspace_swap_count(p->p_vmspace); + vm_map_unlock_read(&p->p_vmspace->vm_map); + size += vmspace_resident_count(p->p_vmspace); /* * if the this process is bigger than the biggest one * remember it. |