From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754293AbcFPMFJ (ORCPT ); Thu, 16 Jun 2016 08:05:09 -0400 Received: from mail-io0-f180.google.com ([209.85.223.180]:34514 "EHLO mail-io0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754021AbcFPMFG (ORCPT ); Thu, 16 Jun 2016 08:05:06 -0400 MIME-Version: 1.0 In-Reply-To: <20160615202447.GA5005@www.outflux.net> References: <20160615202447.GA5005@www.outflux.net> From: Ard Biesheuvel Date: Thu, 16 Jun 2016 14:04:48 +0200 Message-ID: Subject: Re: [PATCH v2] ARM: mm: fix location of _etext To: Kees Cook Cc: Russell King , "linux-kernel@vger.kernel.org" , Matt Fleming , Pratyush Anand , Nicolas Pitre , Vladimir Murzin , Toshi Kani , Stephen Boyd , Chris Brandt , Alexander Potapenko , Marc Zyngier , Arnd Bergmann , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 15 June 2016 at 22:24, Kees Cook wrote: > The _etext position is defined to be the end of the kernel text code, > and should not include any part of the data segments. This interferes > with things that might check memory ranges and expect executable code > up to _etext. Just to be conservative, leave the kernel resource as > it was, using __init_begin instead of _etext as the end mark. > > Signed-off-by: Kees Cook > --- > v2: > - Switched resource tracker to using __init_begin, rmk Actually, Linus removed the x86 /proc/iomem resources for kernel segments in c4004b02f8e5 ("x86: remove the kernel code/data/bss resources from /proc/iomem") so I wonder if we should not just do the same for ARM and arm64? > --- > arch/arm/kernel/setup.c | 2 +- > arch/arm/kernel/vmlinux.lds.S | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c > index 7b5350060612..dd84f03dc2d4 100644 > --- a/arch/arm/kernel/setup.c > +++ b/arch/arm/kernel/setup.c > @@ -844,7 +844,7 @@ static void __init request_standard_resources(const struct machine_desc *mdesc) > struct resource *res; > > kernel_code.start = virt_to_phys(_text); > - kernel_code.end = virt_to_phys(_etext - 1); > + kernel_code.end = virt_to_phys(__init_begin - 1); > kernel_data.start = virt_to_phys(_sdata); > kernel_data.end = virt_to_phys(_end - 1); > > diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S > index e2c6da096cef..99420fc1f066 100644 > --- a/arch/arm/kernel/vmlinux.lds.S > +++ b/arch/arm/kernel/vmlinux.lds.S > @@ -125,6 +125,8 @@ SECTIONS > #ifdef CONFIG_DEBUG_ALIGN_RODATA > . = ALIGN(1< #endif > + _etext = .; /* End of text section */ > + > RO_DATA(PAGE_SIZE) > > . = ALIGN(4); > @@ -155,8 +157,6 @@ SECTIONS > > NOTES > > - _etext = .; /* End of text and rodata section */ > - > #ifdef CONFIG_DEBUG_RODATA > . = ALIGN(1< #else > -- > 2.7.4 > > > -- > Kees Cook > Chrome OS & Brillo Security