From: Jiri Slaby Use kernel helpers for changing timer internals. Signed-off-by: Jiri Slaby Cc: Alan Cox Signed-off-by: Andrew Morton --- drivers/char/sx.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff -puN drivers/char/sx.c~char-sx-simplify-timer-logic drivers/char/sx.c --- a/drivers/char/sx.c~char-sx-simplify-timer-logic +++ a/drivers/char/sx.c @@ -1353,10 +1353,7 @@ static void sx_pollfunc(unsigned long da sx_interrupt(0, board); - init_timer(&board->timer); - - board->timer.expires = jiffies + sx_poll; - add_timer(&board->timer); + mod_timer(&board->timer, jiffies + sx_poll); func_exit(); } @@ -2134,14 +2131,10 @@ static int sx_init_board(struct sx_board /* The timer should be initialized anyway: That way we can safely del_timer it when the module is unloaded. */ - init_timer(&board->timer); + setup_timer(&board->timer, sx_pollfunc, (unsigned long)board); - if (board->poll) { - board->timer.data = (unsigned long)board; - board->timer.function = sx_pollfunc; - board->timer.expires = jiffies + board->poll; - add_timer(&board->timer); - } + if (board->poll) + mod_timer(&board->timer, jiffies + board->poll); } else { board->irq = 0; } _