All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kristen Carlson Accardi <kristen@linux.intel.com>
To: keescook@chromium.org, tglx@linutronix.de, mingo@redhat.com,
	bp@alien8.de, x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Arnd Bergmann <arnd@arndb.de>
Cc: arjan@linux.intel.com, linux-kernel@vger.kernel.org,
	kernel-hardening@lists.openwall.com, rick.p.edgecombe@intel.com,
	Kristen Carlson Accardi <kristen@linux.intel.com>,
	Tony Luck <tony.luck@intel.com>,
	linux-arch@vger.kernel.org
Subject: [PATCH v3 05/10] x86: Make sure _etext includes function sections
Date: Tue, 23 Jun 2020 10:23:22 -0700	[thread overview]
Message-ID: <20200623172327.5701-6-kristen@linux.intel.com> (raw)
In-Reply-To: <20200623172327.5701-1-kristen@linux.intel.com>

When using -ffunction-sections to place each function in
it's own text section so it can be randomized at load time, the
linker considers these .text.* sections "orphaned sections", and
will place them after the first similar section (.text). In order
to accurately represent the end of the text section and the
orphaned sections, _etext must be moved so that it is after both
.text and .text.* The text size must also be calculated to
include .text AND .text.*

Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Tested-by: Tony Luck <tony.luck@intel.com>
---
 arch/x86/kernel/vmlinux.lds.S     | 17 +++++++++++++++--
 include/asm-generic/vmlinux.lds.h |  2 +-
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index 3bfc8dd8a43d..e8da7eeb4d8d 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -146,9 +146,22 @@ SECTIONS
 #endif
 	} :text =0xcccc
 
-	/* End of text section, which should occupy whole number of pages */
-	_etext = .;
+	/*
+	 * -ffunction-sections creates .text.* sections, which are considered
+	 * "orphan sections" and added after the first similar section (.text).
+	 * Placing this ALIGN statement before _etext causes the address of
+	 * _etext to be below that of all the .text.* orphaned sections
+	 */
 	. = ALIGN(PAGE_SIZE);
+	_etext = .;
+
+	/*
+	 * the size of the .text section is used to calculate the address
+	 * range for orc lookups. If we just use SIZEOF(.text), we will
+	 * miss all the .text.* sections. Calculate the size using _etext
+	 * and _stext and save the value for later.
+	 */
+	text_size = _etext - _stext;
 
 	X86_ALIGN_RODATA_BEGIN
 	RO_DATA(PAGE_SIZE)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index a5552cf28d5d..34eab6513fdc 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -835,7 +835,7 @@
 	. = ALIGN(4);							\
 	.orc_lookup : AT(ADDR(.orc_lookup) - LOAD_OFFSET) {		\
 		orc_lookup = .;						\
-		. += (((SIZEOF(.text) + LOOKUP_BLOCK_SIZE - 1) /	\
+		. += (((text_size + LOOKUP_BLOCK_SIZE - 1) /	\
 			LOOKUP_BLOCK_SIZE) + 1) * 4;			\
 		orc_lookup_end = .;					\
 	}
-- 
2.20.1


  parent reply	other threads:[~2020-06-23 17:24 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-23 17:23 [PATCH v3 00/10] Function Granular KASLR Kristen Carlson Accardi
2020-06-23 17:23 ` [PATCH v3 01/10] objtool: Do not assume order of parent/child functions Kristen Carlson Accardi
2020-06-24  3:08   ` Josh Poimboeuf
2020-06-23 17:23 ` [PATCH v3 02/10] x86: tools/relocs: Support >64K section headers Kristen Carlson Accardi
2020-06-23 17:23 ` [PATCH v3 03/10] x86/boot: Allow a "silent" kaslr random byte fetch Kristen Carlson Accardi
2020-06-23 17:23 ` [PATCH v3 04/10] x86: Makefile: Add build and config option for CONFIG_FG_KASLR Kristen Carlson Accardi
2020-06-23 17:23 ` Kristen Carlson Accardi [this message]
2020-06-24  4:52   ` [PATCH v3 05/10] x86: Make sure _etext includes function sections Kees Cook
2020-06-23 17:23 ` [PATCH v3 06/10] x86/tools: Add relative relocs for randomized functions Kristen Carlson Accardi
2020-06-23 17:23 ` [PATCH v3 07/10] x86/boot/compressed: change definition of STATIC Kristen Carlson Accardi
2020-06-24  6:54   ` Kees Cook
2020-06-23 17:23 ` [PATCH v3 08/10] x86: Add support for function granular KASLR Kristen Carlson Accardi
2020-06-24  7:11   ` Kees Cook
2020-06-23 17:23 ` [PATCH v3 09/10] kallsyms: Hide layout Kristen Carlson Accardi
2020-06-24  7:20   ` Kees Cook
2020-06-24  7:25   ` Kees Cook
2020-06-24 10:21   ` Jann Horn
2020-06-24 10:21     ` Jann Horn
2020-06-24 15:18     ` Kees Cook
2020-06-25 16:19       ` Kristen Carlson Accardi
2020-06-25 16:19         ` Kristen Carlson Accardi
2020-07-07 22:58       ` Kristen Carlson Accardi
2020-07-07 22:58         ` Kristen Carlson Accardi
2020-07-07 23:16         ` Luck, Tony
2020-07-08 16:47           ` Kristen Carlson Accardi
2020-07-08 16:47             ` Kristen Carlson Accardi
2020-06-23 17:23 ` [PATCH v3 10/10] module: Reorder functions Kristen Carlson Accardi
2020-06-24  7:40 ` [PATCH v3 00/10] Function Granular KASLR Kees Cook

Reply instructions:

You may reply publicly 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=20200623172327.5701-6-kristen@linux.intel.com \
    --to=kristen@linux.intel.com \
    --cc=arjan@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=keescook@chromium.org \
    --cc=kernel-hardening@lists.openwall.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=rick.p.edgecombe@intel.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.