diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:33:48 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:33:48 -0500 |
commit | d701fda8601fe267fbd3648f108f0e751305101b (patch) | |
tree | ed4e32e3ff33eb9e01a4c8321776b82b834c6fce | |
parent | d690b2afd5a7a02816386aa704c8c0b1aca8d2de (diff) |
x86: fix early_ioremap()/btmap
fix a long-standing weakness of the early-ioremap allocator: it
uses a single pgd entry for the boot mappings, and was not properly
protecting itself against crossing a 2MB (4MB) boundary.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | include/asm-x86/fixmap_32.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/include/asm-x86/fixmap_32.h b/include/asm-x86/fixmap_32.h index 46bedb7b5426..fde140fd6d95 100644 --- a/include/asm-x86/fixmap_32.h +++ b/include/asm-x86/fixmap_32.h | |||
@@ -90,10 +90,18 @@ enum fixed_addresses { | |||
90 | FIX_PARAVIRT_BOOTMAP, | 90 | FIX_PARAVIRT_BOOTMAP, |
91 | #endif | 91 | #endif |
92 | __end_of_permanent_fixed_addresses, | 92 | __end_of_permanent_fixed_addresses, |
93 | /* temporary boot-time mappings, used before ioremap() is functional */ | 93 | /* |
94 | * 256 temporary boot-time mappings, used by early_ioremap(), | ||
95 | * before ioremap() is functional. | ||
96 | * | ||
97 | * We round it up to the next 512 pages boundary so that we | ||
98 | * can have a single pgd entry and a single pte table: | ||
99 | */ | ||
94 | #define NR_FIX_BTMAPS 64 | 100 | #define NR_FIX_BTMAPS 64 |
95 | #define FIX_BTMAPS_NESTING 4 | 101 | #define FIX_BTMAPS_NESTING 4 |
96 | FIX_BTMAP_END = __end_of_permanent_fixed_addresses, | 102 | FIX_BTMAP_END = |
103 | __end_of_permanent_fixed_addresses + 512 - | ||
104 | (__end_of_permanent_fixed_addresses & 511), | ||
97 | FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_NESTING - 1, | 105 | FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_NESTING - 1, |
98 | FIX_WP_TEST, | 106 | FIX_WP_TEST, |
99 | __end_of_fixed_addresses | 107 | __end_of_fixed_addresses |