summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2018-07-12 11:37:40 +0100
committerWill Deacon <will.deacon@arm.com>2018-07-12 11:37:40 +0100
commite87a4a92fba3721eb06ba8d061b550e09e3d063a (patch)
tree93b2fb25d63f152205a3ad58b40b92798093b115
parentdb7a2d1809a5b6b08d138ff68837f805fc073351 (diff)
downloadlinux-e87a4a92fba3721eb06ba8d061b550e09e3d063a.tar.gz
linux-e87a4a92fba3721eb06ba8d061b550e09e3d063a.tar.bz2
linux-e87a4a92fba3721eb06ba8d061b550e09e3d063a.zip
Revert "arm64: fix infinite stacktrace"
This reverts commit 7e7df71fd57ff2894d96abb0080922bf39460a79. When unwinding out of the IRQ stack and onto the interrupted EL1 stack, we cannot rely on the frame pointer being strictly increasing, as this could terminate the backtrace early depending on how the stacks have been allocated. Signed-off-by: Will Deacon <will.deacon@arm.com>
-rw-r--r--arch/arm64/kernel/stacktrace.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
index e160ca123da3..d5718a060672 100644
--- a/arch/arm64/kernel/stacktrace.c
+++ b/arch/arm64/kernel/stacktrace.c
@@ -56,9 +56,6 @@ int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame)
frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp));
frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp + 8));
- if (frame->fp <= fp)
- return -EINVAL;
-
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
if (tsk->ret_stack &&
(frame->pc == (unsigned long)return_to_handler)) {