aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Starrett <lstarret@broadcom.com>2015-07-31 11:53:26 -0400
committerKevin Hilman <khilman@linaro.org>2015-09-01 15:41:38 -0700
commit845f2e4781d2182e82a9235b7a744e888716ea80 (patch)
tree16c576798f89a0349c087d42fdf177f6df2f6b62
parentd99f5abc00687df8b32e3afaee52eac399fef69e (diff)
arm64: el0_dbg does not set link reg for return to user path, breaks debugv3.14/topic/nohz
When the context tracking feature was backported to 3.14 LSK, setting of the LR was moved out of the main body of el0_sync and into the applicable sub handlers (i.e. el0_da, el0_sp_pc, etc). The el0_dbg handler was overlooked. The implication is that do_debug_exception() will attempt to return directly to userspace without going through the ret_from_exception path. This ultimately results in another sync exception due to a protection fault on the target PC. This was introduced by: commit 333625b7586d2753a77f32e1f898ab7cc6cf7655 Author: Larry Bassel <larry.bassel@linaro.org> Date: Wed Oct 15 15:15:56 2014 -0700 arm64: adjust el0_sync so that a function can be called Backport of the following patch to 3.14 LSK: commit 6ab6463aeb5fbc75fa3227befb508fc33b34dbf1 Author: Larry Bassel <larry.bassel@linaro.org> Date: Fri May 30 20:34:14 2014 +0100 Signed-off-by: Luke Starrett <lstarret@broadcom.com> Signed-off-by: Kevin Hilman <khilman@linaro.org>
-rw-r--r--arch/arm64/kernel/entry.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index e59b7b3500fc..279cd3956b2a 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -526,6 +526,7 @@ el0_dbg:
disable_step x1
mov x1, x25
mov x2, sp
+ adr lr, ret_from_exception
b do_debug_exception
el0_inv:
ct_user_exit