[S390] ptrace: use common code for simple peek/poke operations
arch_ptrace on s390 implements PTRACE_(PEEK|POKE)(TEXT|DATA) instead of using using ptrace_request in kernel/ptrace.c. The only reason is the 31bit addressing mode, where we have to unmask the highest bit. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
bdd42b28cd
commit
07805ac81c
|
@ -339,24 +339,10 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
int copied, ret;
|
||||
|
||||
switch (request) {
|
||||
case PTRACE_PEEKTEXT:
|
||||
case PTRACE_PEEKDATA:
|
||||
/* Remove high order bit from address (only for 31 bit). */
|
||||
addr &= PSW_ADDR_INSN;
|
||||
/* read word at location addr. */
|
||||
return generic_ptrace_peekdata(child, addr, data);
|
||||
|
||||
case PTRACE_PEEKUSR:
|
||||
/* read the word at location addr in the USER area. */
|
||||
return peek_user(child, addr, data);
|
||||
|
||||
case PTRACE_POKETEXT:
|
||||
case PTRACE_POKEDATA:
|
||||
/* Remove high order bit from address (only for 31 bit). */
|
||||
addr &= PSW_ADDR_INSN;
|
||||
/* write the word at location addr. */
|
||||
return generic_ptrace_pokedata(child, addr, data);
|
||||
|
||||
case PTRACE_POKEUSR:
|
||||
/* write the word at location addr in the USER area */
|
||||
return poke_user(child, addr, data);
|
||||
|
@ -386,8 +372,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
copied += sizeof(unsigned long);
|
||||
}
|
||||
return 0;
|
||||
default:
|
||||
/* Removing high order bit from addr (only for 31 bit). */
|
||||
addr &= PSW_ADDR_INSN;
|
||||
return ptrace_request(child, request, addr, data);
|
||||
}
|
||||
return ptrace_request(child, request, addr, data);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
|
|
Loading…
Reference in New Issue