summaryrefslogtreecommitdiffstats
path: root/sys/vm/device_pager.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2003-06-13 03:02:28 +0000
committeralc <alc@FreeBSD.org>2003-06-13 03:02:28 +0000
commitd66a37a0f2941403e0d02a5cb82f14bdb07338cc (patch)
tree131300009b7d968e4f3ac335ab6af00d92af89ef /sys/vm/device_pager.c
parentf7366986b75e25cef2a0167fe951b8ee613d671a (diff)
downloadFreeBSD-src-d66a37a0f2941403e0d02a5cb82f14bdb07338cc.zip
FreeBSD-src-d66a37a0f2941403e0d02a5cb82f14bdb07338cc.tar.gz
Add vm object locking to various pagers' "get pages" methods, i386 stack
management functions, and a u area management function.
Diffstat (limited to 'sys/vm/device_pager.c')
-rw-r--r--sys/vm/device_pager.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/vm/device_pager.c b/sys/vm/device_pager.c
index 4503a0b..d96cd85 100644
--- a/sys/vm/device_pager.c
+++ b/sys/vm/device_pager.c
@@ -212,9 +212,9 @@ dev_pager_getpages(object, m, count, reqpage)
d_mmap_t *mapfunc;
int prot;
- mtx_assert(&Giant, MA_OWNED);
dev = object->handle;
offset = m[reqpage]->pindex;
+ VM_OBJECT_UNLOCK(object);
prot = PROT_READ; /* XXX should pass in? */
mapfunc = devsw(dev)->d_mmap;
@@ -228,6 +228,7 @@ dev_pager_getpages(object, m, count, reqpage)
* free up the all of the original pages.
*/
page = dev_pager_getfake(paddr);
+ VM_OBJECT_LOCK(object);
TAILQ_INSERT_TAIL(&object->un_pager.devp.devp_pglist, page, pageq);
vm_page_lock_queues();
for (i = 0; i < count; i++)
OpenPOWER on IntegriCloud