summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1998-11-25 07:40:49 +0000
committerdg <dg@FreeBSD.org>1998-11-25 07:40:49 +0000
commit3d709a2bc746ff43c5a4dcbed154fbbfbf1608de (patch)
tree4b630c0ae0168d83d5234a3de6815915ab077c41 /sys/vm
parent5739b5d848da713fe444b8e8d3df4f9cfd36541a (diff)
downloadFreeBSD-src-3d709a2bc746ff43c5a4dcbed154fbbfbf1608de.zip
FreeBSD-src-3d709a2bc746ff43c5a4dcbed154fbbfbf1608de.tar.gz
Add missing splvm protection around unqueue call. Without this, the page
queues would eventually get corrupted.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_fault.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 1d6b0f2..886833a 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -66,7 +66,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_fault.c,v 1.89 1998/10/25 17:44:58 phk Exp $
+ * $Id: vm_fault.c,v 1.90 1998/10/28 13:37:02 dg Exp $
*/
/*
@@ -275,7 +275,7 @@ RetryFault:;
fs.m = vm_page_lookup(fs.object, fs.pindex);
if (fs.m != NULL) {
- int queue;
+ int queue, s;
/*
* If the page is being brought in, wait for it and
* then retry.
@@ -283,8 +283,6 @@ RetryFault:;
if ((fs.m->flags & PG_BUSY) ||
(fs.m->busy &&
(fs.m->valid & VM_PAGE_BITS_ALL) != VM_PAGE_BITS_ALL)) {
- int s;
-
unlock_things(&fs);
s = splvm();
if ((fs.m->flags & PG_BUSY) ||
@@ -300,7 +298,9 @@ RetryFault:;
}
queue = fs.m->queue;
+ s = splvm();
vm_page_unqueue_nowakeup(fs.m);
+ splx(s);
/*
* Mark page busy for other processes, and the pagedaemon.
OpenPOWER on IntegriCloud