summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2005-12-06 07:39:36 +0000
committeralc <alc@FreeBSD.org>2005-12-06 07:39:36 +0000
commit71b52e0fd2d7f3d1543968ff681200f2fc73a5d0 (patch)
treef6da87b0dc0a4395eea6d83b1fd94f78ab3e57ff /sys
parent9fbde6681e0fc0266c9ba6d99e20c203f57baefb (diff)
downloadFreeBSD-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.c6
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 {
OpenPOWER on IntegriCloud