diff options
author | dg <dg@FreeBSD.org> | 1998-11-25 07:40:49 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1998-11-25 07:40:49 +0000 |
commit | 3d709a2bc746ff43c5a4dcbed154fbbfbf1608de (patch) | |
tree | 4b630c0ae0168d83d5234a3de6815915ab077c41 /sys/vm/vm_fault.c | |
parent | 5739b5d848da713fe444b8e8d3df4f9cfd36541a (diff) | |
download | FreeBSD-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/vm_fault.c')
-rw-r--r-- | sys/vm/vm_fault.c | 8 |
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. |