diff options
Diffstat (limited to 'arch/cris/arch-v10/kernel/ptrace.c')
-rw-r--r-- | arch/cris/arch-v10/kernel/ptrace.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/cris/arch-v10/kernel/ptrace.c b/arch/cris/arch-v10/kernel/ptrace.c index 581ecabaae53..130dd214e41d 100644 --- a/arch/cris/arch-v10/kernel/ptrace.c +++ b/arch/cris/arch-v10/kernel/ptrace.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/ptrace.h> | 11 | #include <linux/ptrace.h> |
12 | #include <linux/user.h> | 12 | #include <linux/user.h> |
13 | #include <linux/signal.h> | 13 | #include <linux/signal.h> |
14 | #include <linux/security.h> | ||
14 | 15 | ||
15 | #include <asm/uaccess.h> | 16 | #include <asm/uaccess.h> |
16 | #include <asm/page.h> | 17 | #include <asm/page.h> |
@@ -86,9 +87,13 @@ sys_ptrace(long request, long pid, long addr, long data) | |||
86 | ret = -EPERM; | 87 | ret = -EPERM; |
87 | 88 | ||
88 | if (request == PTRACE_TRACEME) { | 89 | if (request == PTRACE_TRACEME) { |
90 | /* are we already being traced? */ | ||
89 | if (current->ptrace & PT_PTRACED) | 91 | if (current->ptrace & PT_PTRACED) |
90 | goto out; | 92 | goto out; |
91 | 93 | ret = security_ptrace(current->parent, current); | |
94 | if (ret) | ||
95 | goto out; | ||
96 | /* set the ptrace bit in the process flags. */ | ||
92 | current->ptrace |= PT_PTRACED; | 97 | current->ptrace |= PT_PTRACED; |
93 | ret = 0; | 98 | ret = 0; |
94 | goto out; | 99 | goto out; |
@@ -207,7 +212,7 @@ sys_ptrace(long request, long pid, long addr, long data) | |||
207 | case PTRACE_KILL: | 212 | case PTRACE_KILL: |
208 | ret = 0; | 213 | ret = 0; |
209 | 214 | ||
210 | if (child->state == TASK_ZOMBIE) | 215 | if (child->exit_state == EXIT_ZOMBIE) |
211 | break; | 216 | break; |
212 | 217 | ||
213 | child->exit_code = SIGKILL; | 218 | child->exit_code = SIGKILL; |