mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: James Morse <james.morse@arm.com>
To: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, james.morse@arm.com,
	catalin.marinas@arm.com
Subject: [stable:PATCH v4.19.235 08/22] arm64: entry: Allow tramp_alias to access symbols after the 4K boundary
Date: Fri, 18 Mar 2022 17:48:28 +0000	[thread overview]
Message-ID: <20220318174842.2321061-9-james.morse@arm.com> (raw)
In-Reply-To: <20220318174842.2321061-1-james.morse@arm.com>

commit 6c5bf79b69f911560fbf82214c0971af6e58e682 upstream.

Systems using kpti enter and exit the kernel through a trampoline mapping
that is always mapped, even when the kernel is not. tramp_valias is a macro
to find the address of a symbol in the trampoline mapping.

Adding extra sets of vectors will expand the size of the entry.tramp.text
section to beyond 4K. tramp_valias will be unable to generate addresses
for symbols beyond 4K as it uses the 12 bit immediate of the add
instruction.

As there are now two registers available when tramp_alias is called,
use the extra register to avoid the 4K limit of the 12 bit immediate.

Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: James Morse <james.morse@arm.com>
---
 arch/arm64/kernel/entry.S | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 1df718f53a1f..5d174c119563 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -135,9 +135,12 @@
 .org .Lventry_start\@ + 128	// Did we overflow the ventry slot?
 	.endm
 
-	.macro tramp_alias, dst, sym
+	.macro tramp_alias, dst, sym, tmp
 	mov_q	\dst, TRAMP_VALIAS
-	add	\dst, \dst, #(\sym - .entry.tramp.text)
+	adr_l	\tmp, \sym
+	add	\dst, \dst, \tmp
+	adr_l	\tmp, .entry.tramp.text
+	sub	\dst, \dst, \tmp
 	.endm
 
 	// This macro corrupts x0-x3. It is the caller's duty
@@ -362,10 +365,10 @@ alternative_else_nop_endif
 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
 	bne	4f
 	msr	far_el1, x29
-	tramp_alias	x30, tramp_exit_native
+	tramp_alias	x30, tramp_exit_native, x29
 	br	x30
 4:
-	tramp_alias	x30, tramp_exit_compat
+	tramp_alias	x30, tramp_exit_compat, x29
 	br	x30
 #endif
 	.else
@@ -1265,7 +1268,7 @@ alternative_if_not ARM64_UNMAP_KERNEL_AT_EL0
 alternative_else_nop_endif
 
 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
-	tramp_alias	dst=x5, sym=__sdei_asm_exit_trampoline
+	tramp_alias	dst=x5, sym=__sdei_asm_exit_trampoline, tmp=x3
 	br	x5
 #endif
 ENDPROC(__sdei_asm_handler)
-- 
2.30.2


  parent reply	other threads:[~2022-03-18 17:50 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-18 17:48 [stable:PATCH v4.19.235 00/22] arm64: Mitigate spectre style branch history side channels James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 01/22] arm64: Add part number for Arm Cortex-A77 James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 02/22] arm64: Add Neoverse-N2, Cortex-A710 CPU part definition James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 03/22] arm64: Add Cortex-X2 " James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 04/22] arm64: entry.S: Add ventry overflow sanity checks James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 05/22] arm64: entry: Make the trampoline cleanup optional James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 06/22] arm64: entry: Free up another register on kpti's tramp_exit path James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 07/22] arm64: entry: Move the trampoline data page before the text page James Morse
2022-03-18 17:48 ` James Morse [this message]
2022-03-18 17:48 ` [stable:PATCH v4.19.235 09/22] arm64: entry: Don't assume tramp_vectors is the start of the vectors James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 10/22] arm64: entry: Move trampoline macros out of ifdef'd section James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 11/22] arm64: entry: Make the kpti trampoline's kpti sequence optional James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 12/22] arm64: entry: Allow the trampoline text to occupy multiple pages James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 13/22] arm64: entry: Add non-kpti __bp_harden_el1_vectors for mitigations James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 14/22] arm64: entry: Add vectors that have the bhb mitigation sequences James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 15/22] arm64: entry: Add macro for reading symbol addresses from the trampoline James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 16/22] arm64: Add percpu vectors for EL1 James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 17/22] arm64: proton-pack: Report Spectre-BHB vulnerabilities as part of Spectre-v2 James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 18/22] KVM: arm64: Add templates for BHB mitigation sequences James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 19/22] arm64: Mitigate spectre style branch history side channels James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 20/22] KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 21/22] arm64: add ID_AA64ISAR2_EL1 sys register James Morse
2022-03-18 17:48 ` [stable:PATCH v4.19.235 22/22] arm64: Use the clearbhb instruction in mitigations James Morse
2022-03-19 12:52 ` [stable:PATCH v4.19.235 00/22] arm64: Mitigate spectre style branch history side channels Greg KH

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=20220318174842.2321061-9-james.morse@arm.com \
    --to=james.morse@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®