From: Jesper Juhl Convert most of the current code that uses _NSIG directly to instead use valid_signal(). This avoids gcc -W warnings and off-by-one errors. Signed-off-by: Jesper Juhl Signed-off-by: Andrew Morton --- arch/alpha/kernel/ptrace.c | 5 +++-- arch/arm/kernel/ptrace.c | 5 +++-- arch/arm26/kernel/ptrace.c | 5 +++-- arch/cris/arch-v10/kernel/ptrace.c | 5 +++-- arch/frv/kernel/ptrace.c | 5 +++-- arch/h8300/kernel/ptrace.c | 5 +++-- arch/i386/kernel/ptrace.c | 5 +++-- arch/ia64/kernel/ptrace.c | 5 +++-- arch/m32r/kernel/ptrace.c | 5 +++-- arch/m68k/kernel/ptrace.c | 5 +++-- arch/m68knommu/kernel/ptrace.c | 5 +++-- arch/mips/kernel/ptrace.c | 3 ++- arch/mips/kernel/ptrace32.c | 3 ++- arch/parisc/kernel/ptrace.c | 7 ++++--- arch/ppc/kernel/ptrace.c | 5 +++-- arch/ppc64/kernel/ptrace.c | 5 +++-- arch/ppc64/kernel/ptrace32.c | 5 +++-- arch/s390/kernel/ptrace.c | 5 +++-- arch/sh/kernel/ptrace.c | 5 +++-- arch/sh64/kernel/ptrace.c | 5 +++-- arch/sparc/kernel/ptrace.c | 3 ++- arch/sparc64/kernel/ptrace.c | 3 ++- arch/um/kernel/ptrace.c | 4 ++-- arch/v850/kernel/ptrace.c | 3 ++- arch/x86_64/kernel/ptrace.c | 5 +++-- drivers/char/vt_ioctl.c | 3 ++- fs/fcntl.c | 3 ++- ipc/mqueue.c | 4 ++-- kernel/exit.c | 5 +++-- kernel/futex.c | 3 ++- kernel/ptrace.c | 3 ++- kernel/signal.c | 9 +++++---- kernel/sys.c | 3 ++- 33 files changed, 90 insertions(+), 59 deletions(-) diff -puN arch/alpha/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/alpha/kernel/ptrace.c --- 25/arch/alpha/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/alpha/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -335,7 +336,7 @@ do_sys_ptrace(long request, long pid, lo /* continue and stop at next (return from) syscall */ case PTRACE_CONT: /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -365,7 +366,7 @@ do_sys_ptrace(long request, long pid, lo case PTRACE_SINGLESTEP: /* execute single instruction. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; /* Mark single stepping. */ child->thread_info->bpt_nsaved = -1; diff -puN arch/arm26/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/arm26/kernel/ptrace.c --- 25/arch/arm26/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/arm26/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -591,7 +592,7 @@ static int do_ptrace(int request, struct case PTRACE_SYSCALL: case PTRACE_CONT: ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -626,7 +627,7 @@ static int do_ptrace(int request, struct */ case PTRACE_SINGLESTEP: ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; child->ptrace |= PT_SINGLESTEP; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); diff -puN arch/arm/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/arm/kernel/ptrace.c --- 25/arch/arm/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/arm/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -693,7 +694,7 @@ static int do_ptrace(int request, struct case PTRACE_SYSCALL: case PTRACE_CONT: ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -728,7 +729,7 @@ static int do_ptrace(int request, struct */ case PTRACE_SINGLESTEP: ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; child->ptrace |= PT_SINGLESTEP; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); diff -puN arch/cris/arch-v10/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/cris/arch-v10/kernel/ptrace.c --- 25/arch/cris/arch-v10/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/cris/arch-v10/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -184,7 +185,7 @@ sys_ptrace(long request, long pid, long case PTRACE_CONT: ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) { @@ -219,7 +220,7 @@ sys_ptrace(long request, long pid, long case PTRACE_SINGLESTEP: ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); diff -puN arch/frv/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/frv/kernel/ptrace.c --- 25/arch/frv/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/frv/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -239,7 +240,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -267,7 +268,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SINGLESTEP: /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); ptrace_enable(child); diff -puN arch/h8300/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/h8300/kernel/ptrace.c --- 25/arch/h8300/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/h8300/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -171,7 +172,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data >= _NSIG) + if (!valid_signal(data)) break ; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -202,7 +203,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SINGLESTEP: { /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); child->exit_code = data; diff -puN arch/i386/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/i386/kernel/ptrace.c --- 25/arch/i386/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/i386/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -511,7 +512,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) { set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -543,7 +544,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SINGLESTEP: /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); set_singlestep(child); diff -puN arch/ia64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/ia64/kernel/ptrace.c --- 25/arch/ia64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/ia64/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -1481,7 +1482,7 @@ sys_ptrace (long request, pid_t pid, uns case PTRACE_CONT: /* restart after signal. */ ret = -EIO; - if (data > _NSIG) + if (!valid_signal(data)) goto out_tsk; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -1520,7 +1521,7 @@ sys_ptrace (long request, pid_t pid, uns /* let child execute for one instruction */ case PTRACE_SINGLEBLOCK: ret = -EIO; - if (data > _NSIG) + if (!valid_signal(data)) goto out_tsk; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); diff -puN arch/m32r/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/m32r/kernel/ptrace.c --- 25/arch/m32r/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/m32r/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -665,7 +666,7 @@ do_ptrace(long request, struct task_stru case PTRACE_SYSCALL: case PTRACE_CONT: ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -700,7 +701,7 @@ do_ptrace(long request, struct task_stru unsigned long pc, insn; ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); if ((child->ptrace & PT_DTRACE) == 0) { diff -puN arch/m68k/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/m68k/kernel/ptrace.c --- 25/arch/m68k/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/m68k/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -251,7 +252,7 @@ asmlinkage int sys_ptrace(long request, long tmp; ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) { child->thread.work.syscall_trace = ~0; @@ -292,7 +293,7 @@ asmlinkage int sys_ptrace(long request, long tmp; ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; child->thread.work.syscall_trace = 0; tmp = get_reg(child, PT_SR) | (TRACE_BITS << 16); diff -puN arch/m68knommu/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/m68knommu/kernel/ptrace.c --- 25/arch/m68knommu/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/m68knommu/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -240,7 +241,7 @@ asmlinkage int sys_ptrace(long request, long tmp; ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -278,7 +279,7 @@ asmlinkage int sys_ptrace(long request, long tmp; ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); tmp = get_reg(child, PT_SR) | (TRACE_BITS << 16); diff -puN arch/mips/kernel/ptrace32.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/mips/kernel/ptrace32.c --- 25/arch/mips/kernel/ptrace32.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/mips/kernel/ptrace32.c Thu Apr 28 16:45:15 2005 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -241,7 +242,7 @@ asmlinkage int sys32_ptrace(int request, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned int) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) { set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); diff -puN arch/mips/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/mips/kernel/ptrace.c --- 25/arch/mips/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/mips/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -257,7 +258,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) { set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); diff -puN arch/parisc/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/parisc/kernel/ptrace.c --- 25/arch/parisc/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/parisc/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -285,7 +286,7 @@ long sys_ptrace(long request, pid_t pid, ret = -EIO; DBG("sys_ptrace(%s)\n", request == PTRACE_SYSCALL ? "SYSCALL" : "CONT"); - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) goto out_tsk; child->ptrace &= ~(PT_SINGLESTEP|PT_BLOCKSTEP); if (request == PTRACE_SYSCALL) { @@ -311,7 +312,7 @@ long sys_ptrace(long request, pid_t pid, case PTRACE_SINGLEBLOCK: DBG("sys_ptrace(SINGLEBLOCK)\n"); ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) goto out_tsk; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); child->ptrace &= ~PT_SINGLESTEP; @@ -328,7 +329,7 @@ long sys_ptrace(long request, pid_t pid, case PTRACE_SINGLESTEP: DBG("sys_ptrace(SINGLESTEP)\n"); ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) goto out_tsk; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); diff -puN arch/ppc64/kernel/ptrace32.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/ppc64/kernel/ptrace32.c --- 25/arch/ppc64/kernel/ptrace32.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/ppc64/kernel/ptrace32.c Thu Apr 28 16:45:15 2005 @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -293,7 +294,7 @@ int sys32_ptrace(long request, long pid, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -325,7 +326,7 @@ int sys32_ptrace(long request, long pid, case PTRACE_SINGLESTEP: { /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); set_single_step(child); diff -puN arch/ppc64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/ppc64/kernel/ptrace.c --- 25/arch/ppc64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/ppc64/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -162,7 +163,7 @@ int sys_ptrace(long request, long pid, l case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -194,7 +195,7 @@ int sys_ptrace(long request, long pid, l case PTRACE_SINGLESTEP: { /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); set_single_step(child); diff -puN arch/ppc/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/ppc/kernel/ptrace.c --- 25/arch/ppc/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/ppc/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -356,7 +357,7 @@ int sys_ptrace(long request, long pid, l case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) { set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -389,7 +390,7 @@ int sys_ptrace(long request, long pid, l case PTRACE_SINGLESTEP: { /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); set_single_step(child); diff -puN arch/s390/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/s390/kernel/ptrace.c --- 25/arch/s390/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/s390/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -609,7 +610,7 @@ do_ptrace(struct task_struct *child, lon /* continue and stop at next (return from) syscall */ case PTRACE_CONT: /* restart after signal. */ - if ((unsigned long) data >= _NSIG) + if (!valid_signal(data)) return -EIO; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -637,7 +638,7 @@ do_ptrace(struct task_struct *child, lon case PTRACE_SINGLESTEP: /* set the trap flag. */ - if ((unsigned long) data >= _NSIG) + if (!valid_signal(data)) return -EIO; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); child->exit_code = data; diff -puN arch/sh64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/sh64/kernel/ptrace.c --- 25/arch/sh64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/sh64/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -255,7 +256,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -285,7 +286,7 @@ asmlinkage int sys_ptrace(long request, struct pt_regs *regs; ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); if ((child->ptrace & PT_DTRACE) == 0) { diff -puN arch/sh/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/sh/kernel/ptrace.c --- 25/arch/sh/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/sh/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -197,7 +198,7 @@ asmlinkage int sys_ptrace(long request, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); @@ -228,7 +229,7 @@ asmlinkage int sys_ptrace(long request, struct pt_regs *dummy = NULL; ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); if ((child->ptrace & PT_DTRACE) == 0) { diff -puN arch/sparc64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/sparc64/kernel/ptrace.c --- 25/arch/sparc64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/sparc64/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -559,7 +560,7 @@ asmlinkage void do_ptrace(struct pt_regs addr = 1; case PTRACE_CONT: { /* restart after signal. */ - if (data > _NSIG) { + if (!valid_signal(data)) { pt_error_return(regs, EIO); goto out_tsk; } diff -puN arch/sparc/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/sparc/kernel/ptrace.c --- 25/arch/sparc/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/sparc/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -526,7 +527,7 @@ asmlinkage void do_ptrace(struct pt_regs addr = 1; case PTRACE_CONT: { /* restart after signal. */ - if (data > _NSIG) { + if (!valid_signal(data)) { pt_error_return(regs, EIO); goto out_tsk; } diff -puN arch/um/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/um/kernel/ptrace.c --- 25/arch/um/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/um/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -143,7 +143,7 @@ long sys_ptrace(long request, long pid, case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ case PTRACE_CONT: { /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; child->ptrace &= ~PT_DTRACE; @@ -179,7 +179,7 @@ long sys_ptrace(long request, long pid, case PTRACE_SINGLESTEP: { /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); child->ptrace |= PT_DTRACE; diff -puN arch/v850/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/v850/kernel/ptrace.c --- 25/arch/v850/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/v850/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -208,7 +209,7 @@ int sys_ptrace(long request, long pid, l /* Execute a single instruction. */ case PTRACE_SINGLESTEP: rval = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; /* Turn CHILD's single-step flag on or off. */ diff -puN arch/x86_64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal arch/x86_64/kernel/ptrace.c --- 25/arch/x86_64/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/arch/x86_64/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -467,7 +468,7 @@ asmlinkage long sys_ptrace(long request, case PTRACE_CONT: /* restart after signal. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; if (request == PTRACE_SYSCALL) set_tsk_thread_flag(child,TIF_SYSCALL_TRACE); @@ -529,7 +530,7 @@ asmlinkage long sys_ptrace(long request, case PTRACE_SINGLESTEP: /* set the trap flag. */ ret = -EIO; - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) break; clear_tsk_thread_flag(child,TIF_SYSCALL_TRACE); set_singlestep(child); diff -puN drivers/char/vt_ioctl.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal drivers/char/vt_ioctl.c --- 25/drivers/char/vt_ioctl.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/drivers/char/vt_ioctl.c Thu Apr 28 16:45:15 2005 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -641,7 +642,7 @@ int vt_ioctl(struct tty_struct *tty, str extern int spawnpid, spawnsig; if (!perm || !capable(CAP_KILL)) return -EPERM; - if (arg < 1 || arg > _NSIG || arg == SIGKILL) + if (!valid_signal(arg) || arg < 1 || arg == SIGKILL) return -EINVAL; spawnpid = current->pid; spawnsig = arg; diff -puN fs/fcntl.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal fs/fcntl.c --- 25/fs/fcntl.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/fs/fcntl.c Thu Apr 28 16:45:15 2005 @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -308,7 +309,7 @@ static long do_fcntl(int fd, unsigned in break; case F_SETSIG: /* arg == 0 restores default behaviour. */ - if (arg < 0 || arg > _NSIG) { + if (!valid_signal(arg)) { break; } err = 0; diff -puN ipc/mqueue.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal ipc/mqueue.c --- 25/ipc/mqueue.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/ipc/mqueue.c Thu Apr 28 16:45:15 2005 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "util.h" @@ -976,8 +977,7 @@ asmlinkage long sys_mq_notify(mqd_t mqde notification.sigev_notify != SIGEV_THREAD)) return -EINVAL; if (notification.sigev_notify == SIGEV_SIGNAL && - (notification.sigev_signo < 0 || - notification.sigev_signo > _NSIG)) { + !valid_signal(notification.sigev_signo)) { return -EINVAL; } if (notification.sigev_notify == SIGEV_THREAD) { diff -puN kernel/exit.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal kernel/exit.c --- 25/kernel/exit.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/kernel/exit.c Thu Apr 28 16:45:15 2005 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -277,7 +278,7 @@ void set_special_pids(pid_t session, pid */ int allow_signal(int sig) { - if (sig < 1 || sig > _NSIG) + if (!valid_signal(sig) || sig < 1) return -EINVAL; spin_lock_irq(¤t->sighand->siglock); @@ -298,7 +299,7 @@ EXPORT_SYMBOL(allow_signal); int disallow_signal(int sig) { - if (sig < 1 || sig > _NSIG) + if (!valid_signal(sig) || sig < 1) return -EINVAL; spin_lock_irq(¤t->sighand->siglock); diff -puN kernel/futex.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal kernel/futex.c --- 25/kernel/futex.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/kernel/futex.c Thu Apr 28 16:45:15 2005 @@ -39,6 +39,7 @@ #include #include #include +#include #define FUTEX_HASHBITS (CONFIG_BASE_SMALL ? 4 : 8) @@ -654,7 +655,7 @@ static int futex_fd(unsigned long uaddr, int ret, err; ret = -EINVAL; - if (signal < 0 || signal > _NSIG) + if (!valid_signal(signal)) goto out; ret = get_unused_fd(); diff -puN kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal kernel/ptrace.c --- 25/kernel/ptrace.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/kernel/ptrace.c Thu Apr 28 16:45:15 2005 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -166,7 +167,7 @@ bad: int ptrace_detach(struct task_struct *child, unsigned int data) { - if ((unsigned long) data > _NSIG) + if (!valid_signal(data)) return -EIO; /* Architecture-specific hardware disable .. */ diff -puN kernel/signal.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal kernel/signal.c --- 25/kernel/signal.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/kernel/signal.c Thu Apr 28 16:45:15 2005 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -638,7 +639,7 @@ static int check_kill_permission(int sig struct task_struct *t) { int error = -EINVAL; - if (sig < 0 || sig > _NSIG) + if (!valid_signal(sig)) return error; error = -EPERM; if ((!info || ((unsigned long)info != 1 && @@ -1237,7 +1238,7 @@ send_sig_info(int sig, struct siginfo *i * Make sure legacy kernel users don't send in bad values * (normal paths check this in check_kill_permission). */ - if (sig < 0 || sig > _NSIG) + if (!valid_signal(sig)) return -EINVAL; /* @@ -1512,7 +1513,7 @@ void do_notify_parent(struct task_struct if (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN) sig = 0; } - if (sig > 0 && sig <= _NSIG) + if (valid_signal(sig) && sig > 0) __group_send_sig_info(sig, &info, tsk->parent); __wake_up_parent(tsk, tsk->parent); spin_unlock_irqrestore(&psig->siglock, flags); @@ -2356,7 +2357,7 @@ do_sigaction(int sig, const struct k_sig { struct k_sigaction *k; - if (sig < 1 || sig > _NSIG || (act && sig_kernel_only(sig))) + if (!valid_signal(sig) || sig < 1 || (act && sig_kernel_only(sig))) return -EINVAL; k = ¤t->sighand->action[sig-1]; diff -puN kernel/sys.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal kernel/sys.c --- 25/kernel/sys.c~convert-code-that-currently-tests-_nsig-directly-to-use-valid_signal Thu Apr 28 16:45:15 2005 +++ 25-akpm/kernel/sys.c Thu Apr 28 16:45:15 2005 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -1640,7 +1641,7 @@ asmlinkage long sys_prctl(int option, un switch (option) { case PR_SET_PDEATHSIG: sig = arg2; - if (sig < 0 || sig > _NSIG) { + if (!valid_signal(sig)) { error = -EINVAL; break; } _