Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d701fda8 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

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: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent d690b2af
Loading
Loading
Loading
Loading
+10 −2
Original line number Original line Diff line number Diff line
@@ -90,10 +90,18 @@ enum fixed_addresses {
	FIX_PARAVIRT_BOOTMAP,
	FIX_PARAVIRT_BOOTMAP,
#endif
#endif
	__end_of_permanent_fixed_addresses,
	__end_of_permanent_fixed_addresses,
	/* temporary boot-time mappings, used before ioremap() is functional */
	/*
	 * 256 temporary boot-time mappings, used by early_ioremap(),
	 * before ioremap() is functional.
	 *
	 * We round it up to the next 512 pages boundary so that we
	 * can have a single pgd entry and a single pte table:
	 */
#define NR_FIX_BTMAPS		64
#define NR_FIX_BTMAPS		64
#define FIX_BTMAPS_NESTING	4
#define FIX_BTMAPS_NESTING	4
	FIX_BTMAP_END = __end_of_permanent_fixed_addresses,
	FIX_BTMAP_END =
		__end_of_permanent_fixed_addresses + 512 -
			(__end_of_permanent_fixed_addresses & 511),
	FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_NESTING - 1,
	FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_NESTING - 1,
	FIX_WP_TEST,
	FIX_WP_TEST,
	__end_of_fixed_addresses
	__end_of_fixed_addresses