diff options
Diffstat (limited to 'arch/arm/kernel/ptrace.c')
| -rw-r--r-- | arch/arm/kernel/ptrace.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index efd7a341614b..cd99b83f14c2 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <linux/user.h> | 19 | #include <linux/user.h> |
| 20 | #include <linux/security.h> | 20 | #include <linux/security.h> |
| 21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
| 22 | #include <linux/signal.h> | ||
| 22 | 23 | ||
| 23 | #include <asm/uaccess.h> | 24 | #include <asm/uaccess.h> |
| 24 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
| @@ -693,7 +694,7 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat | |||
| 693 | case PTRACE_SYSCALL: | 694 | case PTRACE_SYSCALL: |
| 694 | case PTRACE_CONT: | 695 | case PTRACE_CONT: |
| 695 | ret = -EIO; | 696 | ret = -EIO; |
| 696 | if ((unsigned long) data > _NSIG) | 697 | if (!valid_signal(data)) |
| 697 | break; | 698 | break; |
| 698 | if (request == PTRACE_SYSCALL) | 699 | if (request == PTRACE_SYSCALL) |
| 699 | set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 700 | set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
| @@ -728,7 +729,7 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat | |||
| 728 | */ | 729 | */ |
| 729 | case PTRACE_SINGLESTEP: | 730 | case PTRACE_SINGLESTEP: |
| 730 | ret = -EIO; | 731 | ret = -EIO; |
| 731 | if ((unsigned long) data > _NSIG) | 732 | if (!valid_signal(data)) |
| 732 | break; | 733 | break; |
| 733 | child->ptrace |= PT_SINGLESTEP; | 734 | child->ptrace |= PT_SINGLESTEP; |
| 734 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 735 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
