This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / arch / arm / kernel / sys_arm.c
index 154099a..7cbd18e 100644 (file)
@@ -51,13 +51,6 @@ asmlinkage int sys_pipe(unsigned long __user *fildes)
        return error;
 }
 
-/*
- * This is the lowest virtual address we can permit any user space
- * mapping to be mapped at.  This is particularly important for
- * non-high vector CPUs.
- */
-#define MIN_MAP_ADDR   (PAGE_SIZE)
-
 /* common code for old and new mmaps */
 inline long do_mmap2(
        unsigned long addr, unsigned long len,
@@ -69,7 +62,11 @@ inline long do_mmap2(
 
        flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
 
-       if (flags & MAP_FIXED && addr < MIN_MAP_ADDR)
+       /*
+        * If we are doing a fixed mapping, and address < PAGE_SIZE,
+        * then deny it.
+        */
+       if (flags & MAP_FIXED && addr < PAGE_SIZE && vectors_base() == 0)
                goto out;
 
        error = -EBADF;
@@ -122,7 +119,12 @@ sys_arm_mremap(unsigned long addr, unsigned long old_len,
 {
        unsigned long ret = -EINVAL;
 
-       if (flags & MREMAP_FIXED && new_addr < MIN_MAP_ADDR)
+       /*
+        * If we are doing a fixed mapping, and address < PAGE_SIZE,
+        * then deny it.
+        */
+       if (flags & MREMAP_FIXED && new_addr < PAGE_SIZE &&
+           vectors_base() == 0)
                goto out;
 
        down_write(&current->mm->mmap_sem);