diff options
Diffstat (limited to 'arch/m32r/kernel/ptrace.c')
-rw-r--r-- | arch/m32r/kernel/ptrace.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c index 5f02b3144875..57a92ef31a90 100644 --- a/arch/m32r/kernel/ptrace.c +++ b/arch/m32r/kernel/ptrace.c | |||
@@ -595,7 +595,6 @@ void ptrace_disable(struct task_struct *child) | |||
595 | static int | 595 | static int |
596 | do_ptrace(long request, struct task_struct *child, long addr, long data) | 596 | do_ptrace(long request, struct task_struct *child, long addr, long data) |
597 | { | 597 | { |
598 | unsigned long tmp; | ||
599 | int ret; | 598 | int ret; |
600 | 599 | ||
601 | switch (request) { | 600 | switch (request) { |
@@ -604,11 +603,7 @@ do_ptrace(long request, struct task_struct *child, long addr, long data) | |||
604 | */ | 603 | */ |
605 | case PTRACE_PEEKTEXT: | 604 | case PTRACE_PEEKTEXT: |
606 | case PTRACE_PEEKDATA: | 605 | case PTRACE_PEEKDATA: |
607 | ret = access_process_vm(child, addr, &tmp, sizeof(tmp), 0); | 606 | ret = generic_ptrace_peekdata(child, addr, data); |
608 | if (ret == sizeof(tmp)) | ||
609 | ret = put_user(tmp,(unsigned long __user *) data); | ||
610 | else | ||
611 | ret = -EIO; | ||
612 | break; | 607 | break; |
613 | 608 | ||
614 | /* | 609 | /* |
@@ -624,15 +619,9 @@ do_ptrace(long request, struct task_struct *child, long addr, long data) | |||
624 | */ | 619 | */ |
625 | case PTRACE_POKETEXT: | 620 | case PTRACE_POKETEXT: |
626 | case PTRACE_POKEDATA: | 621 | case PTRACE_POKEDATA: |
627 | ret = access_process_vm(child, addr, &data, sizeof(data), 1); | 622 | ret = generic_ptrace_pokedata(child, addr, data); |
628 | if (ret == sizeof(data)) { | 623 | if (ret == 0 && request == PTRACE_POKETEXT) |
629 | ret = 0; | 624 | invalidate_cache(); |
630 | if (request == PTRACE_POKETEXT) { | ||
631 | invalidate_cache(); | ||
632 | } | ||
633 | } else { | ||
634 | ret = -EIO; | ||
635 | } | ||
636 | break; | 625 | break; |
637 | 626 | ||
638 | /* | 627 | /* |