summaryrefslogtreecommitdiffstats
path: root/sys/fs/specfs
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2003-06-19 17:56:12 +0000
committeralc <alc@FreeBSD.org>2003-06-19 17:56:12 +0000
commitec69a73039701201caef169a81077c5103eade04 (patch)
tree65ca2110e6725f914dc26cd01bbc3473b734830a /sys/fs/specfs
parent51b79512bb4df81402eb2af2e590de92878b2c48 (diff)
downloadFreeBSD-src-ec69a73039701201caef169a81077c5103eade04.zip
FreeBSD-src-ec69a73039701201caef169a81077c5103eade04.tar.gz
Lock the vm object when freeing a vm page.
Diffstat (limited to 'sys/fs/specfs')
-rw-r--r--sys/fs/specfs/spec_vnops.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c
index 5f54f5d..9594756 100644
--- a/sys/fs/specfs/spec_vnops.c
+++ b/sys/fs/specfs/spec_vnops.c
@@ -765,6 +765,7 @@ spec_getpages(ap)
pmap_qremove(kva, pcount);
gotreqpage = 0;
+ VM_OBJECT_LOCK(vp->v_object);
vm_page_lock_queues();
for (i = 0, toff = 0; i < pcount; i++, toff = nextoff) {
nextoff = toff + PAGE_SIZE;
@@ -817,6 +818,7 @@ spec_getpages(ap)
}
}
vm_page_unlock_queues();
+ VM_OBJECT_UNLOCK(vp->v_object);
if (!gotreqpage) {
m = ap->a_m[ap->a_reqpage];
printf(
OpenPOWER on IntegriCloud