| From f324fa58327791b2696628b31480e7e21c745706 Mon Sep 17 00:00:00 2001 |
| From: Sven Schnelle <svens@stackframe.org> |
| Date: Thu, 4 Apr 2019 18:16:04 +0200 |
| Subject: parisc: also set iaoq_b in instruction_pointer_set() |
| |
| From: Sven Schnelle <svens@stackframe.org> |
| |
| commit f324fa58327791b2696628b31480e7e21c745706 upstream. |
| |
| When setting the instruction pointer on PA-RISC we also need |
| to set the back of the instruction queue to the new offset, otherwise |
| we will execute on instruction from the new location, and jumping |
| back to the old location stored in iaoq_b. |
| |
| Signed-off-by: Sven Schnelle <svens@stackframe.org> |
| Signed-off-by: Helge Deller <deller@gmx.de> |
| Fixes: 75ebedf1d263 ("parisc: Add HAVE_REGS_AND_STACK_ACCESS_API feature") |
| Cc: stable@vger.kernel.org # 4.19+ |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/parisc/include/asm/ptrace.h | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/arch/parisc/include/asm/ptrace.h |
| +++ b/arch/parisc/include/asm/ptrace.h |
| @@ -28,7 +28,8 @@ static inline unsigned long regs_return_ |
| static inline void instruction_pointer_set(struct pt_regs *regs, |
| unsigned long val) |
| { |
| - regs->iaoq[0] = val; |
| + regs->iaoq[0] = val; |
| + regs->iaoq[1] = val + 4; |
| } |
| |
| /* Query offset/name of register from its name/offset */ |