diff options
author | alc <alc@FreeBSD.org> | 2003-06-19 17:56:12 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-06-19 17:56:12 +0000 |
commit | ec69a73039701201caef169a81077c5103eade04 (patch) | |
tree | 65ca2110e6725f914dc26cd01bbc3473b734830a /sys/fs | |
parent | 51b79512bb4df81402eb2af2e590de92878b2c48 (diff) | |
download | FreeBSD-src-ec69a73039701201caef169a81077c5103eade04.zip FreeBSD-src-ec69a73039701201caef169a81077c5103eade04.tar.gz |
Lock the vm object when freeing a vm page.
Diffstat (limited to 'sys/fs')
-rw-r--r-- | sys/fs/specfs/spec_vnops.c | 2 |
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( |