summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorcognet <cognet@FreeBSD.org>2005-10-03 14:18:21 +0000
committercognet <cognet@FreeBSD.org>2005-10-03 14:18:21 +0000
commit624df2d21e663002c80f0a23804038e6ef6adedd (patch)
tree5aaba2665d310e8bbc187a001f780e4f07dcfc73 /sys
parentb6fce18ccc9e7b7371d321f29a6c911a0f1a225f (diff)
downloadFreeBSD-src-624df2d21e663002c80f0a23804038e6ef6adedd.zip
FreeBSD-src-624df2d21e663002c80f0a23804038e6ef6adedd.tar.gz
Make mem.c know about the pages allocated with ARM_USE_SMALL_ALLOC.
Diffstat (limited to 'sys')
-rw-r--r--sys/arm/arm/mem.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/arm/arm/mem.c b/sys/arm/arm/mem.c
index a9582a6..ead318e 100644
--- a/sys/arm/arm/mem.c
+++ b/sys/arm/arm/mem.c
@@ -64,6 +64,13 @@ __FBSDID("$FreeBSD$");
#include <machine/memdev.h>
+#include "opt_global.h"
+
+#ifdef ARM_USE_SMALL_ALLOC
+extern vm_offset_t alloc_curaddr;
+extern vm_offset_t alloc_firstaddr;
+#endif
+
/*
* Used in /dev/mem drivers and elsewhere
*/
@@ -116,11 +123,14 @@ memrw(struct cdev *dev, struct uio *uio, int flags)
for (; addr < eaddr; addr += PAGE_SIZE)
if (pmap_extract(kernel_pmap, addr) == 0)
return (EFAULT);
-
if (!kernacc((caddr_t)(int)uio->uio_offset, c,
uio->uio_rw == UIO_READ ?
VM_PROT_READ : VM_PROT_WRITE))
- return (EFAULT);
+#ifdef ARM_USE_SMALL_ALLOC
+ if (addr < alloc_firstaddr || addr >
+ alloc_curaddr)
+#endif
+ return (EFAULT);
error = uiomove((caddr_t)(int)uio->uio_offset, (int)c, uio);
continue;
}
OpenPOWER on IntegriCloud