[PATCH] x86-64: fix overlap of modules and fixmap areas

From: Jan Beulich
Date: Thu Jul 31 2008 - 11:48:14 EST


Plus add a build time check so this doesn't go unnoticed again.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

---
arch/x86/kernel/head64.c | 1 +
include/asm-x86/pgtable_64.h | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)

--- linux-2.6.27-rc1/arch/x86/kernel/head64.c 2008-07-31 17:31:51.000000000 +0200
+++ 2.6.27-rc1-x86_64-modules-fixmap/arch/x86/kernel/head64.c 2008-07-31 15:55:01.000000000 +0200
@@ -88,6 +88,7 @@ void __init x86_64_start_kernel(char * r
BUILD_BUG_ON(!(MODULES_VADDR > __START_KERNEL));
BUILD_BUG_ON(!(((MODULES_END - 1) & PGDIR_MASK) ==
(__START_KERNEL & PGDIR_MASK)));
+ BUILD_BUG_ON(__fix_to_virt(__end_of_fixed_addresses) <= MODULES_END);

/* clear bss before set_intr_gate with early_idt_handler */
clear_bss();
--- linux-2.6.27-rc1/include/asm-x86/pgtable_64.h 2008-07-31 17:32:19.000000000 +0200
+++ 2.6.27-rc1-x86_64-modules-fixmap/include/asm-x86/pgtable_64.h 2008-07-31 15:50:44.000000000 +0200
@@ -151,7 +151,7 @@ static inline void native_pgd_clear(pgd_
#define VMALLOC_END _AC(0xffffe1ffffffffff, UL)
#define VMEMMAP_START _AC(0xffffe20000000000, UL)
#define MODULES_VADDR _AC(0xffffffffa0000000, UL)
-#define MODULES_END _AC(0xfffffffffff00000, UL)
+#define MODULES_END _AC(0xffffffffff000000, UL)
#define MODULES_LEN (MODULES_END - MODULES_VADDR)

#ifndef __ASSEMBLY__



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/