Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Borislav Petkov <bp@alien8.de>
Cc: linux-arch@vger.kernel.org, linux-s390@vger.kernel.org,
	Michal Simek <monstr@monstr.eu>,
	linux-ia64@vger.kernel.org, Kees Cook <keescook@chromium.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Segher Boessenkool <segher@kernel.crashing.org>,
	linuxppc-dev@lists.ozlabs.org,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Andy Lutomirski <luto@kernel.org>,
	linux-alpha@vger.kernel.org,
	Rick Edgecombe <rick.p.edgecombe@intel.com>,
	Will Deacon <will@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-c6x-dev@linux-c6x.org
Subject: [PATCH v3 15/29] x86: Actually use _etext for end of text segment
Date: Tue, 29 Oct 2019 14:13:37 -0700
Message-ID: <20191029211351.13243-16-keescook@chromium.org> (raw)
In-Reply-To: <20191029211351.13243-1-keescook@chromium.org>

Various calculations are using the end of the exception table (which
does not need to be executable) as the end of the text segment. Instead,
in preparation for moving the exception table into RO_DATA, move _etext
after the exception table and update the calculations.

Signed-off-by: Kees Cook <keescook@chromium.org>
---
 arch/x86/include/asm/sections.h | 1 -
 arch/x86/kernel/vmlinux.lds.S   | 7 +++----
 arch/x86/mm/init_64.c           | 6 +++---
 arch/x86/mm/pti.c               | 2 +-
 4 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/arch/x86/include/asm/sections.h b/arch/x86/include/asm/sections.h
index 71b32f2570ab..036c360910c5 100644
--- a/arch/x86/include/asm/sections.h
+++ b/arch/x86/include/asm/sections.h
@@ -6,7 +6,6 @@
 #include <asm/extable.h>
 
 extern char __brk_base[], __brk_limit[];
-extern struct exception_table_entry __stop___ex_table[];
 extern char __end_rodata_aligned[];
 
 #if defined(CONFIG_X86_64)
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index 41362e90142d..a1a758e25b2b 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -143,15 +143,14 @@ SECTIONS
 		*(.text.__x86.indirect_thunk)
 		__indirect_thunk_end = .;
 #endif
-
-		/* End of text section */
-		_etext = .;
 	} :text = 0x9090
 
 	EXCEPTION_TABLE(16)
 
-	/* .text should occupy whole number of pages */
+	/* End of text section, which should occupy whole number of pages */
+	_etext = .;
 	. = ALIGN(PAGE_SIZE);
+
 	X86_ALIGN_RODATA_BEGIN
 	RO_DATA(PAGE_SIZE)
 	X86_ALIGN_RODATA_END
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index a6b5c653727b..26299e9ce6da 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -1263,7 +1263,7 @@ int kernel_set_to_readonly;
 void set_kernel_text_rw(void)
 {
 	unsigned long start = PFN_ALIGN(_text);
-	unsigned long end = PFN_ALIGN(__stop___ex_table);
+	unsigned long end = PFN_ALIGN(_etext);
 
 	if (!kernel_set_to_readonly)
 		return;
@@ -1282,7 +1282,7 @@ void set_kernel_text_rw(void)
 void set_kernel_text_ro(void)
 {
 	unsigned long start = PFN_ALIGN(_text);
-	unsigned long end = PFN_ALIGN(__stop___ex_table);
+	unsigned long end = PFN_ALIGN(_etext);
 
 	if (!kernel_set_to_readonly)
 		return;
@@ -1301,7 +1301,7 @@ void mark_rodata_ro(void)
 	unsigned long start = PFN_ALIGN(_text);
 	unsigned long rodata_start = PFN_ALIGN(__start_rodata);
 	unsigned long end = (unsigned long) &__end_rodata_hpage_align;
-	unsigned long text_end = PFN_ALIGN(&__stop___ex_table);
+	unsigned long text_end = PFN_ALIGN(&_etext);
 	unsigned long rodata_end = PFN_ALIGN(&__end_rodata);
 	unsigned long all_end;
 
diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c
index 7f2140414440..44a9f068eee0 100644
--- a/arch/x86/mm/pti.c
+++ b/arch/x86/mm/pti.c
@@ -574,7 +574,7 @@ static void pti_clone_kernel_text(void)
 	 */
 	unsigned long start = PFN_ALIGN(_text);
 	unsigned long end_clone  = (unsigned long)__end_rodata_aligned;
-	unsigned long end_global = PFN_ALIGN((unsigned long)__stop___ex_table);
+	unsigned long end_global = PFN_ALIGN((unsigned long)_etext);
 
 	if (!pti_kernel_image_global_ok())
 		return;
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply index

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-29 21:13 [PATCH v3 00/29] vmlinux.lds.h: Refactor EXCEPTION_TABLE and NOTES Kees Cook
2019-10-29 21:13 ` [PATCH v3 01/29] powerpc: Rename "notes" PT_NOTE to "note" Kees Cook
2019-10-29 21:13 ` [PATCH v3 02/29] powerpc: Remove PT_NOTE workaround Kees Cook
2019-10-29 21:13 ` [PATCH v3 03/29] powerpc: Rename PT_LOAD identifier "kernel" to "text" Kees Cook
2019-10-29 21:13 ` [PATCH v3 04/29] alpha: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 05/29] ia64: Rename PT_LOAD identifier "code" " Kees Cook
2019-10-29 21:13 ` [PATCH v3 06/29] s390: Move RO_DATA into "text" PT_LOAD Program Header Kees Cook
2019-10-29 21:13 ` [PATCH v3 07/29] x86: Restore "text" Program Header with dummy section Kees Cook
2019-10-29 21:13 ` [PATCH v3 08/29] vmlinux.lds.h: Provide EMIT_PT_NOTE to indicate export of .notes Kees Cook
2019-10-29 21:13 ` [PATCH v3 09/29] vmlinux.lds.h: Move Program Header restoration into NOTES macro Kees Cook
2019-10-29 21:13 ` [PATCH v3 10/29] vmlinux.lds.h: Move NOTES into RO_DATA Kees Cook
2019-10-29 21:13 ` [PATCH v3 11/29] vmlinux.lds.h: Replace RODATA with RO_DATA Kees Cook
2019-10-29 21:13 ` [PATCH v3 12/29] vmlinux.lds.h: Replace RO_DATA_SECTION " Kees Cook
2019-10-29 21:13 ` [PATCH v3 13/29] vmlinux.lds.h: Replace RW_DATA_SECTION with RW_DATA Kees Cook
2019-10-29 21:13 ` [PATCH v3 14/29] vmlinux.lds.h: Allow EXCEPTION_TABLE to live in RO_DATA Kees Cook
2019-10-29 21:13 ` Kees Cook [this message]
2019-10-29 21:13 ` [PATCH v3 16/29] x86: Move EXCEPTION_TABLE to RO_DATA segment Kees Cook
2019-10-29 21:13 ` [PATCH v3 17/29] alpha: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 18/29] arm64: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 19/29] c6x: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 20/29] h8300: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 21/29] ia64: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 22/29] microblaze: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 23/29] parisc: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 24/29] powerpc: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 25/29] xtensa: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 26/29] x86/mm: Remove redundant &s on addresses Kees Cook
2019-10-29 21:13 ` [PATCH v3 27/29] x86/mm: Report which part of kernel image is freed Kees Cook
2019-10-29 21:13 ` [PATCH v3 28/29] x86/mm: Report actual image regions in /proc/iomem Kees Cook
2019-10-29 21:13 ` [PATCH v3 29/29] x86: Use INT3 instead of NOP for linker fill bytes Kees Cook

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191029211351.13243-16-keescook@chromium.org \
    --to=keescook@chromium.org \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-c6x-dev@linux-c6x.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@kernel.org \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=rick.p.edgecombe@intel.com \
    --cc=segher@kernel.crashing.org \
    --cc=will@kernel.org \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-ARM-Kernel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-arm-kernel/0 linux-arm-kernel/git/0.git
	git clone --mirror https://lore.kernel.org/linux-arm-kernel/1 linux-arm-kernel/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-arm-kernel linux-arm-kernel/ https://lore.kernel.org/linux-arm-kernel \
		linux-arm-kernel@lists.infradead.org
	public-inbox-index linux-arm-kernel

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-arm-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git