diff options
author | alc <alc@FreeBSD.org> | 2005-12-06 07:39:36 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2005-12-06 07:39:36 +0000 |
commit | 71b52e0fd2d7f3d1543968ff681200f2fc73a5d0 (patch) | |
tree | f6da87b0dc0a4395eea6d83b1fd94f78ab3e57ff /sys | |
parent | 9fbde6681e0fc0266c9ba6d99e20c203f57baefb (diff) | |
download | FreeBSD-src-71b52e0fd2d7f3d1543968ff681200f2fc73a5d0.zip FreeBSD-src-71b52e0fd2d7f3d1543968ff681200f2fc73a5d0.tar.gz |
Reduce the scope of the page queues lock in exec_map_first_page(). The vm
object lock is sufficient for reading a page's PG_BUSY and busy flags.
MFC after: 1 week
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/kern_exec.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 51f012f..7c7a783 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -823,11 +823,9 @@ exec_map_first_page(imgp) if ((ma[i] = vm_page_lookup(object, i)) != NULL) { if (ma[i]->valid) break; - vm_page_lock_queues(); - if ((ma[i]->flags & PG_BUSY) || ma[i]->busy) { - vm_page_unlock_queues(); + if ((ma[i]->flags & PG_BUSY) || ma[i]->busy) break; - } + vm_page_lock_queues(); vm_page_busy(ma[i]); vm_page_unlock_queues(); } else { |