From: Domen Puncer Use msleep_interruptible() instead of schedule_timeout() to guarantee consistent timing regardless of HZ value. schedule_timeout(1) will vary between 10 and 1 milliseconds, depending on the value of HZ (100 or 1000 respectively). For consistent behavior, msleep_interruptible() should be used. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer Signed-off-by: Andrew Morton --- 25-akpm/drivers/char/sx.c | 10 +++------- 1 files changed, 3 insertions(+), 7 deletions(-) diff -puN drivers/char/sx.c~char-sx-replace-schedule_timeout-with-msleep_interruptible drivers/char/sx.c --- 25/drivers/char/sx.c~char-sx-replace-schedule_timeout-with-msleep_interruptible 2005-03-06 19:57:27.000000000 -0800 +++ 25-akpm/drivers/char/sx.c 2005-03-06 19:57:27.000000000 -0800 @@ -1515,13 +1515,9 @@ static void sx_close (void *ptr) sx_reconfigure_port(port); sx_send_command (port, HS_CLOSE, 0, 0); - while (to-- && (sx_read_channel_byte (port, hi_hstat) != HS_IDLE_CLOSED)) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); - if (signal_pending (current)) - break; - } - current->state = TASK_RUNNING; + while (to-- && (sx_read_channel_byte (port, hi_hstat) != HS_IDLE_CLOSED)) + if (msleep_interruptible(10)) + break; if (sx_read_channel_byte (port, hi_hstat) != HS_IDLE_CLOSED) { if (sx_send_command (port, HS_FORCE_CLOSED, -1, HS_IDLE_CLOSED) != 1) { printk (KERN_ERR _