]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/frv/kernel/sys_frv.c
frv: fix mmap2 error handling
[linux-2.6-omap-h63xx.git] / arch / frv / kernel / sys_frv.c
index 49b2cf2c38f3d313e9136dfdeaf84ef675b7b53f..baadc97f86278ff2060f64932d60977c80d04abc 100644 (file)
@@ -35,22 +35,21 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
        int error = -EBADF;
        struct file * file = NULL;
 
-       flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
-       if (!(flags & MAP_ANONYMOUS)) {
-               file = fget(fd);
-               if (!file)
-                       goto out;
-       }
-
        /* As with sparc32, make sure the shift for mmap2 is constant
           (12), no matter what PAGE_SIZE we have.... */
 
        /* But unlike sparc32, don't just silently break if we're
           trying to map something we can't */
-       if (pgoff & ((1<<(PAGE_SHIFT-12))-1))
+       if (pgoff & ((1 << (PAGE_SHIFT - 12)) - 1))
                return -EINVAL;
+       pgoff >>= PAGE_SHIFT - 12;
 
-       pgoff >>= (PAGE_SHIFT - 12);
+       flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
+       if (!(flags & MAP_ANONYMOUS)) {
+               file = fget(fd);
+               if (!file)
+                       goto out;
+       }
 
        down_write(&current->mm->mmap_sem);
        error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);