[POWERPC] Add CHECK_FULL_REGS in several places in ptrace code
This restores the CHECK_FULL_REGS sanity check to every place that can access the nonvolatile GPRs for ptrace. This is already done for native-bitwidth PTRACE_PEEKUSR, but was omitted for many other cases (32-bit ptrace, PTRACE_GETREGS, etc.); I think there may have been more uniform checks before that were lost in the recent cleanup of GETREGS et al. Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
fec6047047
commit
fabca2c0a4
@@ -331,6 +331,7 @@ static long arch_ptrace_old(struct task_struct *child, long request, long addr,
|
||||
unsigned long *reg = &((unsigned long *)child->thread.regs)[0];
|
||||
unsigned long __user *tmp = (unsigned long __user *)addr;
|
||||
|
||||
CHECK_FULL_REGS(child->thread.regs);
|
||||
for (i = 0; i < 32; i++) {
|
||||
ret = put_user(*reg, tmp);
|
||||
if (ret)
|
||||
@@ -346,6 +347,7 @@ static long arch_ptrace_old(struct task_struct *child, long request, long addr,
|
||||
unsigned long *reg = &((unsigned long *)child->thread.regs)[0];
|
||||
unsigned long __user *tmp = (unsigned long __user *)addr;
|
||||
|
||||
CHECK_FULL_REGS(child->thread.regs);
|
||||
for (i = 0; i < 32; i++) {
|
||||
ret = get_user(*reg, tmp);
|
||||
if (ret)
|
||||
@@ -517,6 +519,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
ret = -EIO;
|
||||
break;
|
||||
}
|
||||
CHECK_FULL_REGS(child->thread.regs);
|
||||
ret = 0;
|
||||
for (ui = 0; ui < PT_REGS_COUNT; ui ++) {
|
||||
ret |= __put_user(ptrace_get_reg(child, ui),
|
||||
@@ -537,6 +540,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
ret = -EIO;
|
||||
break;
|
||||
}
|
||||
CHECK_FULL_REGS(child->thread.regs);
|
||||
ret = 0;
|
||||
for (ui = 0; ui < PT_REGS_COUNT; ui ++) {
|
||||
ret = __get_user(tmp, (unsigned long __user *) data);
|
||||
|
Reference in New Issue
Block a user