|
@@ -1040,11 +1040,25 @@ void __init mem_init(void)
|
|
(unsigned long)&_text, (unsigned long)&_etext,
|
|
(unsigned long)&_text, (unsigned long)&_etext,
|
|
((unsigned long)&_etext - (unsigned long)&_text) >> 10);
|
|
((unsigned long)&_etext - (unsigned long)&_text) >> 10);
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Check boundaries twice: Some fundamental inconsistencies can
|
|
|
|
+ * be detected at build time already.
|
|
|
|
+ */
|
|
|
|
+#define __FIXADDR_TOP (-PAGE_SIZE)
|
|
|
|
+#ifdef CONFIG_HIGHMEM
|
|
|
|
+ BUILD_BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE > FIXADDR_START);
|
|
|
|
+ BUILD_BUG_ON(VMALLOC_END > PKMAP_BASE);
|
|
|
|
+#endif
|
|
|
|
+#define high_memory (-128UL << 20)
|
|
|
|
+ BUILD_BUG_ON(VMALLOC_START >= VMALLOC_END);
|
|
|
|
+#undef high_memory
|
|
|
|
+#undef __FIXADDR_TOP
|
|
|
|
+
|
|
#ifdef CONFIG_HIGHMEM
|
|
#ifdef CONFIG_HIGHMEM
|
|
BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE > FIXADDR_START);
|
|
BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE > FIXADDR_START);
|
|
BUG_ON(VMALLOC_END > PKMAP_BASE);
|
|
BUG_ON(VMALLOC_END > PKMAP_BASE);
|
|
#endif
|
|
#endif
|
|
- BUG_ON(VMALLOC_START > VMALLOC_END);
|
|
|
|
|
|
+ BUG_ON(VMALLOC_START >= VMALLOC_END);
|
|
BUG_ON((unsigned long)high_memory > VMALLOC_START);
|
|
BUG_ON((unsigned long)high_memory > VMALLOC_START);
|
|
|
|
|
|
if (boot_cpu_data.wp_works_ok < 0)
|
|
if (boot_cpu_data.wp_works_ok < 0)
|