Skip to content

Commit

Permalink
[MIPS] Store sign-extend register values for PTRACE_GETREGS
Browse files Browse the repository at this point in the history
A comment on ptrace_getregs() states "Registers are sign extended to
fill the available space." but it is not true.  Fix code to match the
comment.  Also fix casts on each caller to get rid of some warnings.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Atsushi Nemoto authored and Ralf Baechle committed Oct 29, 2007
1 parent 26c288f commit 62b14c2
Showing 2 changed files with 11 additions and 11 deletions.
18 changes: 9 additions & 9 deletions arch/mips/kernel/ptrace.c
Original file line number Diff line number Diff line change
@@ -65,13 +65,13 @@ int ptrace_getregs(struct task_struct *child, __s64 __user *data)
regs = task_pt_regs(child);

for (i = 0; i < 32; i++)
__put_user(regs->regs[i], data + i);
__put_user(regs->lo, data + EF_LO - EF_R0);
__put_user(regs->hi, data + EF_HI - EF_R0);
__put_user(regs->cp0_epc, data + EF_CP0_EPC - EF_R0);
__put_user(regs->cp0_badvaddr, data + EF_CP0_BADVADDR - EF_R0);
__put_user(regs->cp0_status, data + EF_CP0_STATUS - EF_R0);
__put_user(regs->cp0_cause, data + EF_CP0_CAUSE - EF_R0);
__put_user((long)regs->regs[i], data + i);
__put_user((long)regs->lo, data + EF_LO - EF_R0);
__put_user((long)regs->hi, data + EF_HI - EF_R0);
__put_user((long)regs->cp0_epc, data + EF_CP0_EPC - EF_R0);
__put_user((long)regs->cp0_badvaddr, data + EF_CP0_BADVADDR - EF_R0);
__put_user((long)regs->cp0_status, data + EF_CP0_STATUS - EF_R0);
__put_user((long)regs->cp0_cause, data + EF_CP0_CAUSE - EF_R0);

return 0;
}
@@ -390,11 +390,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
}

case PTRACE_GETREGS:
ret = ptrace_getregs(child, (__u64 __user *) data);
ret = ptrace_getregs(child, (__s64 __user *) data);
break;

case PTRACE_SETREGS:
ret = ptrace_setregs(child, (__u64 __user *) data);
ret = ptrace_setregs(child, (__s64 __user *) data);
break;

case PTRACE_GETFPREGS:
4 changes: 2 additions & 2 deletions arch/mips/kernel/ptrace32.c
Original file line number Diff line number Diff line change
@@ -346,11 +346,11 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
}

case PTRACE_GETREGS:
ret = ptrace_getregs(child, (__u64 __user *) (__u64) data);
ret = ptrace_getregs(child, (__s64 __user *) (__u64) data);
break;

case PTRACE_SETREGS:
ret = ptrace_setregs(child, (__u64 __user *) (__u64) data);
ret = ptrace_setregs(child, (__s64 __user *) (__u64) data);
break;

case PTRACE_GETFPREGS:

0 comments on commit 62b14c2

Please sign in to comment.