diff options
Diffstat (limited to 'arch/mips/kernel/ptrace.c')
-rw-r--r-- | arch/mips/kernel/ptrace.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c index c8777333e198..d21c388c0116 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c | |||
@@ -255,9 +255,13 @@ int ptrace_set_watch_regs(struct task_struct *child, | |||
255 | return 0; | 255 | return 0; |
256 | } | 256 | } |
257 | 257 | ||
258 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 258 | long arch_ptrace(struct task_struct *child, long request, |
259 | unsigned long addr, unsigned long data) | ||
259 | { | 260 | { |
260 | int ret; | 261 | int ret; |
262 | void __user *addrp = (void __user *) addr; | ||
263 | void __user *datavp = (void __user *) data; | ||
264 | unsigned long __user *datalp = (void __user *) data; | ||
261 | 265 | ||
262 | switch (request) { | 266 | switch (request) { |
263 | /* when I and D space are separate, these will need to be fixed. */ | 267 | /* when I and D space are separate, these will need to be fixed. */ |
@@ -386,7 +390,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
386 | ret = -EIO; | 390 | ret = -EIO; |
387 | goto out; | 391 | goto out; |
388 | } | 392 | } |
389 | ret = put_user(tmp, (unsigned long __user *) data); | 393 | ret = put_user(tmp, datalp); |
390 | break; | 394 | break; |
391 | } | 395 | } |
392 | 396 | ||
@@ -478,34 +482,31 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
478 | } | 482 | } |
479 | 483 | ||
480 | case PTRACE_GETREGS: | 484 | case PTRACE_GETREGS: |
481 | ret = ptrace_getregs(child, (__s64 __user *) data); | 485 | ret = ptrace_getregs(child, datavp); |
482 | break; | 486 | break; |
483 | 487 | ||
484 | case PTRACE_SETREGS: | 488 | case PTRACE_SETREGS: |
485 | ret = ptrace_setregs(child, (__s64 __user *) data); | 489 | ret = ptrace_setregs(child, datavp); |
486 | break; | 490 | break; |
487 | 491 | ||
488 | case PTRACE_GETFPREGS: | 492 | case PTRACE_GETFPREGS: |
489 | ret = ptrace_getfpregs(child, (__u32 __user *) data); | 493 | ret = ptrace_getfpregs(child, datavp); |
490 | break; | 494 | break; |
491 | 495 | ||
492 | case PTRACE_SETFPREGS: | 496 | case PTRACE_SETFPREGS: |
493 | ret = ptrace_setfpregs(child, (__u32 __user *) data); | 497 | ret = ptrace_setfpregs(child, datavp); |
494 | break; | 498 | break; |
495 | 499 | ||
496 | case PTRACE_GET_THREAD_AREA: | 500 | case PTRACE_GET_THREAD_AREA: |
497 | ret = put_user(task_thread_info(child)->tp_value, | 501 | ret = put_user(task_thread_info(child)->tp_value, datalp); |
498 | (unsigned long __user *) data); | ||
499 | break; | 502 | break; |
500 | 503 | ||
501 | case PTRACE_GET_WATCH_REGS: | 504 | case PTRACE_GET_WATCH_REGS: |
502 | ret = ptrace_get_watch_regs(child, | 505 | ret = ptrace_get_watch_regs(child, addrp); |
503 | (struct pt_watch_regs __user *) addr); | ||
504 | break; | 506 | break; |
505 | 507 | ||
506 | case PTRACE_SET_WATCH_REGS: | 508 | case PTRACE_SET_WATCH_REGS: |
507 | ret = ptrace_set_watch_regs(child, | 509 | ret = ptrace_set_watch_regs(child, addrp); |
508 | (struct pt_watch_regs __user *) addr); | ||
509 | break; | 510 | break; |
510 | 511 | ||
511 | default: | 512 | default: |