diff options
author | cognet <cognet@FreeBSD.org> | 2005-10-03 14:18:21 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2005-10-03 14:18:21 +0000 |
commit | 624df2d21e663002c80f0a23804038e6ef6adedd (patch) | |
tree | 5aaba2665d310e8bbc187a001f780e4f07dcfc73 /sys | |
parent | b6fce18ccc9e7b7371d321f29a6c911a0f1a225f (diff) | |
download | FreeBSD-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.c | 14 |
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; } |