Attached is a fix. Change log: Fix the sig_notify filtering code for the timer_create system call to properly check for the signal number being small enought, but only if SIG_NONE is not specified. Eliminate useless test of sig_notify. george Aniruddha M Marathe wrote: > George, > > timer_create(2) fails in the case where sigev_notify parameter of > sigevent structure is SIGEV_NONE. I believe this should not happen. > ~snip~ > > Line 377: > SIGEV_NONE & ~(SIGEV_SIGNAL | SIGEV_THREAD_ID) > = 001 & ~(000 | 100) > = 001 & ~(100) > = 001 & 011 > = 001 > therefore the if condition is true > therefore the function returns NULL from line 378. > > Now in sys_timer_create() at line number 462 > Process = NULL > > Now at line 489 > if (!process) becomes TRUE > and function returns with EINVAL > > Is my analysis right? If so can you comment on this behaviour? > Looks like a bug :( I feel a patch coming on... -- George Anzinger george@mvista.com High-res-timers: http://sourceforge.net/projects/high-res-timers/ Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml