summaryrefslogtreecommitdiffstats
path: root/sys/vm/device_pager.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-05-23 22:27:52 +0000
committerjhb <jhb@FreeBSD.org>2001-05-23 22:27:52 +0000
commitc76962451c83054b0ff176b3088dfddf3c94a934 (patch)
tree909644568adfb062c06c026fba3428bfad534933 /sys/vm/device_pager.c
parentc1ce7745c1255fcfe87bccd243b8eb31350f9b08 (diff)
downloadFreeBSD-src-c76962451c83054b0ff176b3088dfddf3c94a934.zip
FreeBSD-src-c76962451c83054b0ff176b3088dfddf3c94a934.tar.gz
Assert Giant is held for the device pager alloc and getpages methods since
we call the mmap method of the cdevsw of the device we are mmap'ing.
Diffstat (limited to 'sys/vm/device_pager.c')
-rw-r--r--sys/vm/device_pager.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/vm/device_pager.c b/sys/vm/device_pager.c
index 86f88a3..b7c35af 100644
--- a/sys/vm/device_pager.c
+++ b/sys/vm/device_pager.c
@@ -106,6 +106,7 @@ dev_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t fo
unsigned int npages;
vm_offset_t off;
+ mtx_assert(&Giant, MA_OWNED);
/*
* Make sure this device can be mapped.
*/
@@ -198,10 +199,11 @@ dev_pager_getpages(object, m, count, reqpage)
vm_offset_t paddr;
vm_page_t page;
dev_t dev;
- int i, s;
+ int i;
d_mmap_t *mapfunc;
int prot;
+ mtx_assert(&Giant, MA_OWNED);
dev = object->handle;
offset = m[reqpage]->pindex;
prot = PROT_READ; /* XXX should pass in? */
@@ -221,9 +223,7 @@ dev_pager_getpages(object, m, count, reqpage)
for (i = 0; i < count; i++) {
vm_page_free(m[i]);
}
- s = splhigh();
vm_page_insert(page, object, offset);
- splx(s);
return (VM_PAGER_OK);
}
OpenPOWER on IntegriCloud