[PATCH] x86/setup: fix low identity map for >= 2GB kernel range

From: Krzysztof Mazur
Date: Fri Nov 06 2015 - 08:26:15 EST


The commit f5f3497cad8c8416a74b9aaceb127908755d020a (x86/setup: Extend
low identity map to cover whole kernel range) extended the low identity
mapping. However, if the kernel uses more than 2 GB (VMSPLIT_2G_OPT or
VMSPLIT_1G memory split), the normal memory mapping is overwritten by
the low identity mapping causing crash. To avoid overwritting, limit the
low identity map to cover only memory before kernel range (PAGE_OFFSET).

Signed-off-by: Krzysztof Mazur <krzysiek@xxxxxxxxxxxx>
---
The bug can be also fixed by copying identity mapping before copying
kernel address range, but this fix is smaller.

It might be also helpful to add a warning, if the low identity mapping
is truncated due to kernel mapping (KERNEL_PGD_BOUNDARY < KERNEL_PGD_PTRS).

arch/x86/kernel/setup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index a3cccbf..37c8ea8 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1180,7 +1180,7 @@ void __init setup_arch(char **cmdline_p)
*/
clone_pgd_range(initial_page_table,
swapper_pg_dir + KERNEL_PGD_BOUNDARY,
- KERNEL_PGD_PTRS);
+ min(KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY));
#endif

tboot_probe();
--
2.6.0

--
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/