diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-11-10 04:12:10 -0500 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-11-10 04:12:10 -0500 |
| commit | 2f67bdb23d74a6c6fd4f98f64239c5c34d1833cc (patch) | |
| tree | fe533abe3e7c400848647b95e4806f5125c654c3 /arch/v850/kernel/ptrace.c | |
| parent | d40d9d29c020f8466c96f8e3ad4b7c014ff1085d (diff) | |
| parent | 3b44f137b9a846c5452d9e6e1271b79b1dbcc942 (diff) | |
Merge branch 'master'
Diffstat (limited to 'arch/v850/kernel/ptrace.c')
| -rw-r--r-- | arch/v850/kernel/ptrace.c | 43 |
1 files changed, 2 insertions, 41 deletions
diff --git a/arch/v850/kernel/ptrace.c b/arch/v850/kernel/ptrace.c index d6077ff47d22..18492d02aaf6 100644 --- a/arch/v850/kernel/ptrace.c +++ b/arch/v850/kernel/ptrace.c | |||
| @@ -113,45 +113,10 @@ static int set_single_step (struct task_struct *t, int val) | |||
| 113 | return 1; | 113 | return 1; |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | long sys_ptrace(long request, long pid, long addr, long data) | 116 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) |
| 117 | { | 117 | { |
| 118 | struct task_struct *child; | ||
| 119 | int rval; | 118 | int rval; |
| 120 | 119 | ||
| 121 | lock_kernel(); | ||
| 122 | |||
| 123 | if (request == PTRACE_TRACEME) { | ||
| 124 | /* are we already being traced? */ | ||
| 125 | if (current->ptrace & PT_PTRACED) { | ||
| 126 | rval = -EPERM; | ||
| 127 | goto out; | ||
| 128 | } | ||
| 129 | /* set the ptrace bit in the process flags. */ | ||
| 130 | current->ptrace |= PT_PTRACED; | ||
| 131 | rval = 0; | ||
| 132 | goto out; | ||
| 133 | } | ||
| 134 | rval = -ESRCH; | ||
| 135 | read_lock(&tasklist_lock); | ||
| 136 | child = find_task_by_pid(pid); | ||
| 137 | if (child) | ||
| 138 | get_task_struct(child); | ||
| 139 | read_unlock(&tasklist_lock); | ||
| 140 | if (!child) | ||
| 141 | goto out; | ||
| 142 | |||
| 143 | rval = -EPERM; | ||
| 144 | if (pid == 1) /* you may not mess with init */ | ||
| 145 | goto out_tsk; | ||
| 146 | |||
| 147 | if (request == PTRACE_ATTACH) { | ||
| 148 | rval = ptrace_attach(child); | ||
| 149 | goto out_tsk; | ||
| 150 | } | ||
| 151 | rval = ptrace_check_attach(child, request == PTRACE_KILL); | ||
| 152 | if (rval < 0) | ||
| 153 | goto out_tsk; | ||
| 154 | |||
| 155 | switch (request) { | 120 | switch (request) { |
| 156 | unsigned long val, copied; | 121 | unsigned long val, copied; |
| 157 | 122 | ||
| @@ -248,11 +213,7 @@ long sys_ptrace(long request, long pid, long addr, long data) | |||
| 248 | rval = -EIO; | 213 | rval = -EIO; |
| 249 | goto out; | 214 | goto out; |
| 250 | } | 215 | } |
| 251 | 216 | out: | |
| 252 | out_tsk: | ||
| 253 | put_task_struct(child); | ||
| 254 | out: | ||
| 255 | unlock_kernel(); | ||
| 256 | return rval; | 217 | return rval; |
| 257 | } | 218 | } |
| 258 | 219 | ||
