
From: eric.piel@tremplin-utc.net

Few months ago, Corey Minyard corrected handling of incorrect values of
signals.  cf
http://linux.bkbits.net:8080/linux-2.5/cset@1.1267.56.40?nav=index.html%7Csrc/%7Csrc/kernel%7Crelated/kernel/posix-timers.c

Working on the High-Resolution Timers project, I noticed there is an error
in good_sigevent() to catch the case when sigev_signo is 0.  In this
function, we want to return NULL when sigev_signo is 0.  The one liner
attached (used for a long time in the HRT patch) should do the trick.

Also, don't do `if ((unsigned)(foo > N))' when trying to catch negative
values of an integer.



---

 kernel/posix-timers.c |    3 +--
 1 files changed, 1 insertion(+), 2 deletions(-)

diff -puN kernel/posix-timers.c~SIGRTMAX-fix kernel/posix-timers.c
--- 25/kernel/posix-timers.c~SIGRTMAX-fix	2004-01-24 15:44:23.000000000 -0800
+++ 25-akpm/kernel/posix-timers.c	2004-01-24 15:49:54.000000000 -0800
@@ -344,8 +344,7 @@ static inline struct task_struct * good_
 		return NULL;
 
 	if ((event->sigev_notify & ~SIGEV_NONE & MIPS_SIGEV) &&
-			event->sigev_signo &&
-			((unsigned) (event->sigev_signo > SIGRTMAX)))
+		(event->sigev_signo <= 0 || event->sigev_signo > SIGRTMAX))
 		return NULL;
 
 	return rtn;

_
