In riscv_gpr_set, pass regs instead of ®s to user_regset_copyin to fix
gdb segfault.
Signed-off-by: Jim Wilson <[email protected]>
---
arch/riscv/kernel/ptrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c
index ba3e80712797..9f82a7e34c64 100644
--- a/arch/riscv/kernel/ptrace.c
+++ b/arch/riscv/kernel/ptrace.c
@@ -50,7 +50,7 @@ static int riscv_gpr_set(struct task_struct *target,
struct pt_regs *regs;
regs = task_pt_regs(target);
- ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, ®s, 0, -1);
+ ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, regs, 0, -1);
return ret;
}
--
2.17.1
On Mon, 11 Jun 2018 14:48:22 PDT (-0700), Jim Wilson wrote:
> In riscv_gpr_set, pass regs instead of ®s to user_regset_copyin to fix
> gdb segfault.
>
> Signed-off-by: Jim Wilson <[email protected]>
> ---
> arch/riscv/kernel/ptrace.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c
> index ba3e80712797..9f82a7e34c64 100644
> --- a/arch/riscv/kernel/ptrace.c
> +++ b/arch/riscv/kernel/ptrace.c
> @@ -50,7 +50,7 @@ static int riscv_gpr_set(struct task_struct *target,
> struct pt_regs *regs;
>
> regs = task_pt_regs(target);
> - ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, ®s, 0, -1);
> + ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, regs, 0, -1);
> return ret;
> }
Whoops, that's embarassing :). I poked around and didn't see this anywhere
else, so I'm not sure where we managed to obtain this particular pathology.
Thanks for the patch!
On Mon, Jun 11, 2018 at 5:46 PM, Palmer Dabbelt <[email protected]> wrote:
> Whoops, that's embarassing :). I poked around and didn't see this anywhere
> else, so I'm not sure where we managed to obtain this particular pathology.
Comment say it was copied from tile which I think was just recently
removed. But looking at older copy, tile has "struct pt_regs regs"
whereas riscv has "struct pt_regs *regs" and so tile needed the & and
riscv does not, but only one of the two ampersands was removed in the
riscv port. My patch removes the other one.
Jim