diff options
author | alc <alc@FreeBSD.org> | 2003-06-13 03:02:28 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-06-13 03:02:28 +0000 |
commit | d66a37a0f2941403e0d02a5cb82f14bdb07338cc (patch) | |
tree | 131300009b7d968e4f3ac335ab6af00d92af89ef /sys/vm/device_pager.c | |
parent | f7366986b75e25cef2a0167fe951b8ee613d671a (diff) | |
download | FreeBSD-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.c | 3 |
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++) |