linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: afzal mohammed <afzal.mohd.ma@gmail.com>,
	Vladimir Murzin <vladimir.murzin@arm.com>,
	Russell King <rmk+kernel@armlinux.org.uk>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 4.14 18/24] ARM: 8926/1: v7m: remove register save to stack before svc
Date: Wed, 30 Oct 2019 11:55:49 -0400	[thread overview]
Message-ID: <20191030155555.10494-18-sashal@kernel.org> (raw)
In-Reply-To: <20191030155555.10494-1-sashal@kernel.org>

From: afzal mohammed <afzal.mohd.ma@gmail.com>

[ Upstream commit 2ecb287998a47cc0a766f6071f63bc185f338540 ]

r0-r3 & r12 registers are saved & restored, before & after svc
respectively. Intention was to preserve those registers across thread to
handler mode switch.

On v7-M, hardware saves the register context upon exception in AAPCS
complaint way. Restoring r0-r3 & r12 is done from stack location where
hardware saves it, not from the location on stack where these registers
were saved.

To clarify, on stm32f429 discovery board:

1. before svc, sp - 0x90009ff8
2. r0-r3,r12 saved to 0x90009ff8 - 0x9000a00b
3. upon svc, h/w decrements sp by 32 & pushes registers onto stack
4. after svc,  sp - 0x90009fd8
5. r0-r3,r12 restored from 0x90009fd8 - 0x90009feb

Above means r0-r3,r12 is not restored from the location where they are
saved, but since hardware pushes the registers onto stack, the registers
are restored correctly.

Note that during register saving to stack (step 2), it goes past
0x9000a000. And it seems, based on objdump, there are global symbols
residing there, and it perhaps can cause issues on a non-XIP Kernel
(on XIP, data section is setup later).

Based on the analysis above, manually saving registers onto stack is at
best no-op and at worst can cause data section corruption. Hence remove
storing of registers onto stack before svc.

Fixes: b70cd406d7fe ("ARM: 8671/1: V7M: Preserve registers across switch from Thread to Handler mode")
Signed-off-by: afzal mohammed <afzal.mohd.ma@gmail.com>
Acked-by: Vladimir Murzin <vladimir.murzin@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/mm/proc-v7m.S | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S
index 92e84181933ad..c68408d51c4bc 100644
--- a/arch/arm/mm/proc-v7m.S
+++ b/arch/arm/mm/proc-v7m.S
@@ -135,7 +135,6 @@ __v7m_setup_cont:
 	dsb
 	mov	r6, lr			@ save LR
 	ldr	sp, =init_thread_union + THREAD_START_SP
-	stmia	sp, {r0-r3, r12}
 	cpsie	i
 	svc	#0
 1:	cpsid	i
-- 
2.20.1


  parent reply	other threads:[~2019-10-30 15:59 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-30 15:55 [PATCH AUTOSEL 4.14 01/24] arm64: dts: Fix gpio to pinmux mapping Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 02/24] regulator: ti-abb: Fix timeout in ti_abb_wait_txdone/ti_abb_clear_all_txdone Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 03/24] regulator: pfuze100-regulator: Variable "val" in pfuze100_regulator_probe() could be uninitialized Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 04/24] ASoC: wm_adsp: Don't generate kcontrols without READ flags Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 05/24] ASoc: rockchip: i2s: Fix RPM imbalance Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 06/24] ARM: dts: logicpd-torpedo-som: Remove twl_keypad Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 07/24] pinctrl: ns2: Fix off by one bugs in ns2_pinmux_enable() Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 08/24] ARM: mm: fix alignment handler faults under memory pressure Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 09/24] scsi: scsi_dh_alua: handle RTPG sense code correctly during state transitions Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 10/24] scsi: sni_53c710: fix compilation error Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 11/24] scsi: fix kconfig dependency warning related to 53C700_LE_ON_BE Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 12/24] ARM: dts: imx7s: Correct GPT's ipg clock source Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 13/24] perf c2c: Fix memory leak in build_cl_output() Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 14/24] USB: legousbtower: fix a signedness bug in tower_probe() Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 15/24] perf kmem: Fix memory leak in compact_gfp_flags() Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 16/24] ARM: davinci: dm365: Fix McBSP dma_slave_map entry Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 17/24] scsi: target: core: Do not overwrite CDB byte 1 Sasha Levin
2019-10-30 15:55 ` Sasha Levin [this message]
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 19/24] of: unittest: fix memory leak in unittest_data_add Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 20/24] MIPS: bmips: mark exception vectors as char arrays Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 21/24] i2c: stm32f7: remove warning when compiling with W=1 Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 22/24] cifs: Fix cifsInodeInfo lock_sem deadlock when reconnect occurs Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 23/24] nbd: handle racing with error'ed out commands Sasha Levin
2019-10-30 15:55 ` [PATCH AUTOSEL 4.14 24/24] nbd: verify socket is supported during setup Sasha Levin

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=20191030155555.10494-18-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=afzal.mohd.ma@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rmk+kernel@armlinux.org.uk \
    --cc=stable@vger.kernel.org \
    --cc=vladimir.murzin@arm.com \
    /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;
as well as URLs for NNTP newsgroup(s).