From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752665AbcDOWEA (ORCPT ); Fri, 15 Apr 2016 18:04:00 -0400 Received: from mail-pa0-f47.google.com ([209.85.220.47]:34258 "EHLO mail-pa0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752521AbcDOWD4 (ORCPT ); Fri, 15 Apr 2016 18:03:56 -0400 From: Thomas Garnier To: "H . Peter Anvin" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Andy Lutomirski , Thomas Garnier , Dmitry Vyukov , Paolo Bonzini , Dan Williams , Kees Cook , Stephen Smalley , Seth Jennings , Kefeng Wang , Jonathan Corbet , Matt Fleming , Toshi Kani , Alexander Kuleshov , Alexander Popov , Joerg Roedel , Dave Young , Baoquan He , Dave Hansen , Mark Salter , Boris Ostrovsky Cc: x86@kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, gthelen@google.com, kernel-hardening@lists.openwall.com Subject: [RFC v1 2/4] x86, boot: PUD VA support for physical mapping (x86_64) Date: Fri, 15 Apr 2016 15:03:11 -0700 Message-Id: <1460757793-59020-3-git-send-email-thgarnie@google.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1460757793-59020-1-git-send-email-thgarnie@google.com> References: <1460757793-59020-1-git-send-email-thgarnie@google.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Minor change that allows early boot physical mapping of PUD level virtual addresses. This change prepares usage of different virtual addresses for KASLR memory randomization. It has no impact on default usage. Signed-off-by: Thomas Garnier --- Based on next-20160413 --- arch/x86/mm/init_64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 89d9747..6adfbce 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -526,10 +526,10 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, { unsigned long pages = 0, next; unsigned long last_map_addr = end; - int i = pud_index(addr); + int i = pud_index((unsigned long)__va(addr)); for (; i < PTRS_PER_PUD; i++, addr = next) { - pud_t *pud = pud_page + pud_index(addr); + pud_t *pud = pud_page + pud_index((unsigned long)__va(addr)); pmd_t *pmd; pgprot_t prot = PAGE_KERNEL; -- 2.8.0.rc3.226.g39d4020 From mboxrd@z Thu Jan 1 00:00:00 1970 Reply-To: kernel-hardening@lists.openwall.com From: Thomas Garnier Date: Fri, 15 Apr 2016 15:03:11 -0700 Message-Id: <1460757793-59020-3-git-send-email-thgarnie@google.com> In-Reply-To: <1460757793-59020-1-git-send-email-thgarnie@google.com> References: <1460757793-59020-1-git-send-email-thgarnie@google.com> Subject: [kernel-hardening] [RFC v1 2/4] x86, boot: PUD VA support for physical mapping (x86_64) To: "H . Peter Anvin" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Andy Lutomirski , Thomas Garnier , Dmitry Vyukov , Paolo Bonzini , Dan Williams , Kees Cook , Stephen Smalley , Seth Jennings , Kefeng Wang , Jonathan Corbet , Matt Fleming , Toshi Kani , Alexander Kuleshov , Alexander Popov , Joerg Roedel , Dave Young , Baoquan He , Dave Hansen , Mark Salter , Boris Ostrovsky Cc: x86@kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, gthelen@google.com, kernel-hardening@lists.openwall.com List-ID: Minor change that allows early boot physical mapping of PUD level virtual addresses. This change prepares usage of different virtual addresses for KASLR memory randomization. It has no impact on default usage. Signed-off-by: Thomas Garnier --- Based on next-20160413 --- arch/x86/mm/init_64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 89d9747..6adfbce 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -526,10 +526,10 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, { unsigned long pages = 0, next; unsigned long last_map_addr = end; - int i = pud_index(addr); + int i = pud_index((unsigned long)__va(addr)); for (; i < PTRS_PER_PUD; i++, addr = next) { - pud_t *pud = pud_page + pud_index(addr); + pud_t *pud = pud_page + pud_index((unsigned long)__va(addr)); pmd_t *pmd; pgprot_t prot = PAGE_KERNEL; -- 2.8.0.rc3.226.g39d4020