From f7c6a02360b2cddfefb501bd68ae8faf27a7bb24 Mon Sep 17 00:00:00 2001 From: Lennert Buytenhek Date: Sat, 16 Sep 2006 10:50:22 +0100 Subject: [PATCH] --- yaml --- r: 36575 b: refs/heads/master c: 51635ad282ead58b9d164f07e1fb62a9456b427c h: refs/heads/master i: 36573: da77e19839c908becb0f009cea556e602225502b 36571: fbf243aebe88b2e5219ce0bb641613dbab5644e5 36567: 8f667a03229a8bad6a0981c6fd0d86cd64160c9a 36559: 9b7a2a688a7a74eb1eb4525b2bcea22f3fccc71d 36543: 4855b40c9640c2f658dd2e78f3a13a5aec2a78e4 v: v3 --- [refs] | 2 +- trunk/arch/arm/mm/mmap.c | 22 ++++++++++++++++++++++ trunk/include/asm-arm/io.h | 4 ++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 1ec7cd3e4224..e72756ef2682 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bf11d26cb96fe8221ef056eedab692e91634cc65 +refs/heads/master: 51635ad282ead58b9d164f07e1fb62a9456b427c diff --git a/trunk/arch/arm/mm/mmap.c b/trunk/arch/arm/mm/mmap.c index 29e54807c5bc..b0b5f4694070 100644 --- a/trunk/arch/arm/mm/mmap.c +++ b/trunk/arch/arm/mm/mmap.c @@ -114,3 +114,25 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, } } + +/* + * You really shouldn't be using read() or write() on /dev/mem. This + * might go away in the future. + */ +int valid_phys_addr_range(unsigned long addr, size_t size) +{ + if (addr + size > __pa(high_memory)) + return 0; + + return 1; +} + +/* + * We don't use supersection mappings for mmap() on /dev/mem, which + * means that we can't map the memory area above the 4G barrier into + * userspace. + */ +int valid_mmap_phys_addr_range(unsigned long pfn, size_t size) +{ + return !(pfn + (size >> PAGE_SHIFT) > 0x00100000); +} diff --git a/trunk/include/asm-arm/io.h b/trunk/include/asm-arm/io.h index bf7b9dea30f1..8076a85c3675 100644 --- a/trunk/include/asm-arm/io.h +++ b/trunk/include/asm-arm/io.h @@ -280,6 +280,10 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr); #define BIOVEC_MERGEABLE(vec1, vec2) \ ((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2))) +#define ARCH_HAS_VALID_PHYS_ADDR_RANGE +extern int valid_phys_addr_range(unsigned long addr, size_t size); +extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size); + /* * Convert a physical pointer to a virtual kernel pointer for /dev/mem * access