aboutsummaryrefslogtreecommitdiff
path: root/sys/vm
diff options
context:
space:
mode:
authorMatthew Dillon <dillon@FreeBSD.org>2000-11-18 21:11:23 +0000
committerMatthew Dillon <dillon@FreeBSD.org>2000-11-18 21:11:23 +0000
commitef0646f9d8735d4ec0660372a7099117c164e160 (patch)
treee17ad90c17d36ae300db6fca65d4e06f471d32d2 /sys/vm
parent279d7226048c39b48b788e5ea5607c0dbc042acd (diff)
downloadsrc-ef0646f9d8735d4ec0660372a7099117c164e160.tar.gz
src-ef0646f9d8735d4ec0660372a7099117c164e160.zip
Add the splvm()'s suggested in PR 20609 to protect vm_pager_page_unswapped().
The remainder of the PR is still open. PR: kern/20609 (partial fix)
Notes
Notes: svn path=/head/; revision=68884
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_fault.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index af4fe35cb656..686647e5ebc4 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -796,6 +796,7 @@ readrest:
* any swap backing since the page is now dirty.
*/
if (fault_flags & VM_FAULT_DIRTY) {
+ int s;
if (fs.entry->eflags & MAP_ENTRY_NOSYNC) {
if (fs.m->dirty == 0)
vm_page_flag_set(fs.m, PG_NOSYNC);
@@ -803,7 +804,9 @@ readrest:
vm_page_flag_clear(fs.m, PG_NOSYNC);
}
vm_page_dirty(fs.m);
+ s = splvm();
vm_pager_page_unswapped(fs.m);
+ splx(s);
}
}