Messages in this thread | | | Date | Fri, 6 Nov 2015 14:27:33 +0100 | From | Borislav Petkov <> | Subject | Re: [PATCH] x86/setup: fix low identity map for >= 2GB kernel range |
| |
On Fri, Nov 06, 2015 at 02:18:36PM +0100, Krzysztof Mazur wrote: > 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@podlesie.net> > --- > 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();
http://git.kernel.org/tip/1c5dac914794f0170e1582d8ffdee52d30e0e4dd
-- Regards/Gruss, Boris.
ECO tip #101: Trim your mails when you reply.
| |