diff options
Diffstat (limited to 'arch/m68knommu/kernel/ptrace.c')
| -rw-r--r-- | arch/m68knommu/kernel/ptrace.c | 39 |
1 files changed, 1 insertions, 38 deletions
diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c index 621d7b91ccfe..262ab8c72e5f 100644 --- a/arch/m68knommu/kernel/ptrace.c +++ b/arch/m68knommu/kernel/ptrace.c | |||
| @@ -101,43 +101,10 @@ void ptrace_disable(struct task_struct *child) | |||
| 101 | put_reg(child, PT_SR, tmp); | 101 | put_reg(child, PT_SR, tmp); |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | asmlinkage long sys_ptrace(long request, long pid, long addr, long data) | 104 | long arch_ptrace(truct task_struct *child, long request, long addr, long data) |
| 105 | { | 105 | { |
| 106 | struct task_struct *child; | ||
| 107 | int ret; | 106 | int ret; |
| 108 | 107 | ||
| 109 | lock_kernel(); | ||
| 110 | ret = -EPERM; | ||
| 111 | if (request == PTRACE_TRACEME) { | ||
| 112 | /* are we already being traced? */ | ||
| 113 | if (current->ptrace & PT_PTRACED) | ||
| 114 | goto out; | ||
| 115 | /* set the ptrace bit in the process flags. */ | ||
| 116 | current->ptrace |= PT_PTRACED; | ||
| 117 | ret = 0; | ||
| 118 | goto out; | ||
| 119 | } | ||
| 120 | ret = -ESRCH; | ||
| 121 | read_lock(&tasklist_lock); | ||
| 122 | child = find_task_by_pid(pid); | ||
| 123 | if (child) | ||
| 124 | get_task_struct(child); | ||
| 125 | read_unlock(&tasklist_lock); | ||
| 126 | if (!child) | ||
| 127 | goto out; | ||
| 128 | |||
| 129 | ret = -EPERM; | ||
| 130 | if (pid == 1) /* you may not mess with init */ | ||
| 131 | goto out_tsk; | ||
| 132 | |||
| 133 | if (request == PTRACE_ATTACH) { | ||
| 134 | ret = ptrace_attach(child); | ||
| 135 | goto out_tsk; | ||
| 136 | } | ||
| 137 | ret = ptrace_check_attach(child, request == PTRACE_KILL); | ||
| 138 | if (ret < 0) | ||
| 139 | goto out_tsk; | ||
| 140 | |||
| 141 | switch (request) { | 108 | switch (request) { |
| 142 | /* when I and D space are separate, these will need to be fixed. */ | 109 | /* when I and D space are separate, these will need to be fixed. */ |
| 143 | case PTRACE_PEEKTEXT: /* read word at location addr. */ | 110 | case PTRACE_PEEKTEXT: /* read word at location addr. */ |
| @@ -357,10 +324,6 @@ asmlinkage long sys_ptrace(long request, long pid, long addr, long data) | |||
| 357 | ret = -EIO; | 324 | ret = -EIO; |
| 358 | break; | 325 | break; |
| 359 | } | 326 | } |
| 360 | out_tsk: | ||
| 361 | put_task_struct(child); | ||
| 362 | out: | ||
| 363 | unlock_kernel(); | ||
| 364 | return ret; | 327 | return ret; |
| 365 | } | 328 | } |
| 366 | 329 | ||
