sh64: Fix up vmalloc fault range check.
authorPaul Mundt <lethal@linux-sh.org>
Fri, 18 May 2012 11:01:16 +0000 (20:01 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 18 May 2012 11:01:16 +0000 (20:01 +0900)
With the previous attempt reverted this switches to conditionalizing the
end address. Nominally VMALLOC_END, but extended for P3_ADDR_MAX in the
store queue case.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/mm/fault.c

index b0345f09c19799ab8c1582bf326991294e364572..1fc25d85e5154803a50b2858af40798f22b1e7c1 100644 (file)
@@ -160,6 +160,12 @@ static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address)
        return pmd_k;
 }
 
+#ifdef CONFIG_SH_STORE_QUEUES
+#define __FAULT_ADDR_LIMIT     P3_ADDR_MAX
+#else
+#define __FAULT_ADDR_LIMIT     VMALLOC_END
+#endif
+
 /*
  * Handle a fault on the vmalloc or module mapping area
  */
@@ -170,7 +176,7 @@ static noinline int vmalloc_fault(unsigned long address)
        pte_t *pte_k;
 
        /* Make sure we are in vmalloc/module/P3 area: */
-       if (!(address >= P3SEG && address < P3_ADDR_MAX))
+       if (!(address >= VMALLOC_START && address < __FAULT_ADDR_LIMIT))
                return -1;
 
        /*