]> Pileus Git - ~andy/linux/blobdiff - arch/parisc/kernel/sys_parisc.c
parisc: ensure that mmapped shared pages are aligned at SHMLBA addresses
[~andy/linux] / arch / parisc / kernel / sys_parisc.c
index f76c10863c6266c5a4fe6a3fbbe22d022a11e8c2..a047b3227e503bf3a9fe23766d8dea14cf0ea2e8 100644 (file)
@@ -94,11 +94,12 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
 {
        if (len > TASK_SIZE)
                return -ENOMEM;
-       /* Might want to check for cache aliasing issues for MAP_FIXED case
-        * like ARM or MIPS ??? --BenH.
-        */
-       if (flags & MAP_FIXED)
+       if (flags & MAP_FIXED) {
+               if ((flags & MAP_SHARED) &&
+                   (addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1))
+                       return -EINVAL;
                return addr;
+       }
        if (!addr)
                addr = TASK_UNMAPPED_BASE;