summaryrefslogtreecommitdiffstats
path: root/arch/xtensa
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2019-01-02 01:08:32 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-03-10 07:09:01 +0100
commitff204bb4c71b067b91225104b241cd670e7b6fdd (patch)
treea949bb8fc1bb3e681f71cd4cedbb5effebec071e /arch/xtensa
parentc9255e2479efb61dd68a5f6bed598631ece21295 (diff)
downloadtalos-obmc-linux-ff204bb4c71b067b91225104b241cd670e7b6fdd.tar.gz
talos-obmc-linux-ff204bb4c71b067b91225104b241cd670e7b6fdd.zip
xtensa: fix get_wchan
commit d90b88fd3653f1fb66ecc6571b860d5a5749fa56 upstream. Stack unwinding is implemented incorrectly in xtensa get_wchan: instead of extracting a0 and a1 registers from the spill location under the stack pointer it extracts a word pointed to by the stack pointer and subtracts 4 or 3 from it. Cc: stable@vger.kernel.org Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/xtensa')
-rw-r--r--arch/xtensa/kernel/process.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
index 74969a437a37..2e73395f0560 100644
--- a/arch/xtensa/kernel/process.c
+++ b/arch/xtensa/kernel/process.c
@@ -321,8 +321,8 @@ unsigned long get_wchan(struct task_struct *p)
/* Stack layout: sp-4: ra, sp-3: sp' */
- pc = MAKE_PC_FROM_RA(*(unsigned long*)sp - 4, sp);
- sp = *(unsigned long *)sp - 3;
+ pc = MAKE_PC_FROM_RA(SPILL_SLOT(sp, 0), sp);
+ sp = SPILL_SLOT(sp, 1);
} while (count++ < 16);
return 0;
}
OpenPOWER on IntegriCloud