From: Oleg Nesterov Every user of init_timer() also needs to initialize ->function and ->data fields. This patch adds a simple setup_timer() helper for that. The schedule_timeout() is patched as an example of usage. Signed-off-by: Oleg Nesterov Signed-off-by: Andrew Morton --- include/linux/timer.h | 9 +++++++++ kernel/timer.c | 8 ++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff -puN include/linux/timer.h~introduce-setup_timer-helper include/linux/timer.h --- 25/include/linux/timer.h~introduce-setup_timer-helper Tue Sep 20 14:20:06 2005 +++ 25-akpm/include/linux/timer.h Tue Sep 20 14:20:06 2005 @@ -38,6 +38,15 @@ extern struct timer_base_s __init_timer_ void fastcall init_timer(struct timer_list * timer); +static inline void setup_timer(struct timer_list * timer, + void (*function)(unsigned long), + unsigned long data) +{ + timer->function = function; + timer->data = data; + init_timer(timer); +} + /*** * timer_pending - is a timer pending? * @timer: the timer in question diff -puN kernel/timer.c~introduce-setup_timer-helper kernel/timer.c --- 25/kernel/timer.c~introduce-setup_timer-helper Tue Sep 20 14:20:06 2005 +++ 25-akpm/kernel/timer.c Tue Sep 20 14:20:06 2005 @@ -1137,12 +1137,8 @@ fastcall signed long __sched schedule_ti expire = timeout + jiffies; - init_timer(&timer); - timer.expires = expire; - timer.data = (unsigned long) current; - timer.function = process_timeout; - - add_timer(&timer); + setup_timer(&timer, process_timeout, (unsigned long)current); + __mod_timer(&timer, expire); schedule(); del_singleshot_timer_sync(&timer); _