Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754527AbbKWNdW (ORCPT ); Mon, 23 Nov 2015 08:33:22 -0500 Received: from mail-wm0-f41.google.com ([74.125.82.41]:35794 "EHLO mail-wm0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754139AbbKWNdT (ORCPT ); Mon, 23 Nov 2015 08:33:19 -0500 From: Matt Fleming To: Ingo Molnar , Thomas Gleixner , "H . Peter Anvin" Cc: Toshi Kani , Matt Fleming , linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, Borislav Petkov , Sai Praneeth Prakhya , stable@vger.kernel.org, Dave Hansen Subject: [PATCH 1/6] x86/efi: PFN_ALIGN() _text and _end when calculating number of pages Date: Mon, 23 Nov 2015 13:33:09 +0000 Message-Id: <1448285594-17617-2-git-send-email-matt@codeblueprint.co.uk> X-Mailer: git-send-email 2.6.2 In-Reply-To: <1448285594-17617-1-git-send-email-matt@codeblueprint.co.uk> References: <1448285594-17617-1-git-send-email-matt@codeblueprint.co.uk> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1763 Lines: 45 While _text is currently aligned to PAGE_SIZE in the vmlinux linker script because it's based on CONFIG_PHYSICAL_ALIGN, it's always better to be explicit about these things to be sure no alignment bugs are lurking. There's no analogous enforcement for _end. Dave provided an example of why the 'npages' calculation is wrong, "Just for fun, imagine that _end=0xfff and _text=0x1001. npages would be 0." Use PFN_ALIGN() to be sure the calculation is correctly aligned to PAGE_SIZE. Reported-by: Dave Hansen Reported-by: Thomas Gleixner Cc: Borislav Petkov Cc: Sai Praneeth Prakhya Cc: Ingo Molnar Cc: Signed-off-by: Matt Fleming --- arch/x86/platform/efi/efi_64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index a0ac0f9c307f..3a90eb72d153 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c @@ -183,7 +183,7 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) efi_scratch.phys_stack = virt_to_phys(page_address(page)); efi_scratch.phys_stack += PAGE_SIZE; /* stack grows down */ - npages = (_end - _text) >> PAGE_SHIFT; + npages = (PFN_ALIGN(_end) - PFN_ALIGN(_text)) >> PAGE_SHIFT; text = __pa(_text); if (kernel_map_pages_in_pgd(pgd, text >> PAGE_SHIFT, text, npages, 0)) { -- 2.6.2 -- 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/