Use ssleep() instead of schedule_timeout() to guarantee the task delays as expected. The original code does use TASK_INTERRUPTIBLE, but does not check for signals or early return from schedule_timeout() so ssleep() seems more appropriate. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer --- kj-domen/drivers/message/fusion/mptbase.c | 3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) diff -puN drivers/message/fusion/mptbase.c~ssleep-drivers_message_fusion_mptbase drivers/message/fusion/mptbase.c --- kj/drivers/message/fusion/mptbase.c~ssleep-drivers_message_fusion_mptbase 2005-03-02 10:43:34.000000000 +0100 +++ kj-domen/drivers/message/fusion/mptbase.c 2005-03-02 10:43:34.000000000 +0100 @@ -3137,8 +3137,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ign /* wait 1 sec */ if (sleepFlag == CAN_SLEEP) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(1000 * HZ / 1000); + ssleep(1); } else { mdelay (1000); } _