diff options
Diffstat (limited to 'arch/sh/kernel/ptrace.c')
| -rw-r--r-- | arch/sh/kernel/ptrace.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/sh/kernel/ptrace.c b/arch/sh/kernel/ptrace.c index 1b0dfb4d8ea4..b28919b65682 100644 --- a/arch/sh/kernel/ptrace.c +++ b/arch/sh/kernel/ptrace.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/user.h> | 20 | #include <linux/user.h> |
| 21 | #include <linux/slab.h> | 21 | #include <linux/slab.h> |
| 22 | #include <linux/security.h> | 22 | #include <linux/security.h> |
| 23 | #include <linux/signal.h> | ||
| 23 | 24 | ||
| 24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
| 25 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
| @@ -197,7 +198,7 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data) | |||
| 197 | case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ | 198 | case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ |
| 198 | case PTRACE_CONT: { /* restart after signal. */ | 199 | case PTRACE_CONT: { /* restart after signal. */ |
| 199 | ret = -EIO; | 200 | ret = -EIO; |
| 200 | if ((unsigned long) data > _NSIG) | 201 | if (!valid_signal(data)) |
| 201 | break; | 202 | break; |
| 202 | if (request == PTRACE_SYSCALL) | 203 | if (request == PTRACE_SYSCALL) |
| 203 | set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 204 | set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
| @@ -228,7 +229,7 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data) | |||
| 228 | struct pt_regs *dummy = NULL; | 229 | struct pt_regs *dummy = NULL; |
| 229 | 230 | ||
| 230 | ret = -EIO; | 231 | ret = -EIO; |
| 231 | if ((unsigned long) data > _NSIG) | 232 | if (!valid_signal(data)) |
| 232 | break; | 233 | break; |
| 233 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 234 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
| 234 | if ((child->ptrace & PT_DTRACE) == 0) { | 235 | if ((child->ptrace & PT_DTRACE) == 0) { |
