Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1033379AbbKFN1m (ORCPT ); Fri, 6 Nov 2015 08:27:42 -0500 Received: from mail.skyhub.de ([78.46.96.112]:38564 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1033190AbbKFN1l (ORCPT ); Fri, 6 Nov 2015 08:27:41 -0500 Date: Fri, 6 Nov 2015 14:27:33 +0100 From: Borislav Petkov To: Krzysztof Mazur Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Andrew Morton , Andy Lutomirski , "H. Peter Anvin" , Ingo Molnar , Laszlo Ersek , Matt Fleming , Paolo Bonzini , Thomas Gleixner Subject: Re: [PATCH] x86/setup: fix low identity map for >= 2GB kernel range Message-ID: <20151106132733.GC19522@pd.tnic> References: <1446815916-22105-1-git-send-email-krzysiek@podlesie.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1446815916-22105-1-git-send-email-krzysiek@podlesie.net> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1756 Lines: 45 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 > --- > 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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/