Use wait_event_interruptible_timeout() instead of the deprecated interruptible_sleep_on_timeout(). The existing code is complicated in the conditional and so is the new code. Also replace sleep_on_timeout() with direct wait-queue usage. Patch is compile-tested. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer --- kj-domen/drivers/block/DAC960.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) diff -puN drivers/block/DAC960.c~wait_event_int_timeout-drivers_block_DAC960 drivers/block/DAC960.c --- kj/drivers/block/DAC960.c~wait_event_int_timeout-drivers_block_DAC960 2005-04-05 12:56:33.000000000 +0200 +++ kj-domen/drivers/block/DAC960.c 2005-04-05 12:56:33.000000000 +0200 @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include "DAC960.h" @@ -6125,6 +6126,7 @@ static boolean DAC960_V2_TranslatePhysic static boolean DAC960_V2_ExecuteUserCommand(DAC960_Controller_T *Controller, unsigned char *UserCommand) { + DEFINE_WAIT(wait); DAC960_Command_T *Command; DAC960_V2_CommandMailbox_T *CommandMailbox; unsigned long flags; @@ -6315,7 +6317,9 @@ static boolean DAC960_V2_ExecuteUserComm while (Controller->V2.NewControllerInformation->PhysicalScanActive) { DAC960_ExecuteCommand(Command); - sleep_on_timeout(&Controller->CommandWaitQueue, HZ); + prepare_to_wait(&Controller->CommandWaitQueue, &wait, TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ); + finish_wait(&Controller->CommandWaitQueue, &wait); } DAC960_UserCritical("Discovery Completed\n", Controller); } @@ -6915,15 +6919,13 @@ static int DAC960_gam_ioctl(struct inode GetHealthStatus.HealthStatusBuffer, sizeof(DAC960_V2_HealthStatusBuffer_T))) return -EFAULT; - while (Controller->V2.HealthStatusBuffer->StatusChangeCounter - == HealthStatusBuffer.StatusChangeCounter && - Controller->V2.HealthStatusBuffer->NextEventSequenceNumber - == HealthStatusBuffer.NextEventSequenceNumber) - { - interruptible_sleep_on_timeout(&Controller->HealthStatusWaitQueue, - DAC960_MonitoringTimerInterval); - if (signal_pending(current)) return -EINTR; - } + wait_event_interruptible_timeout(Controller->HealthStatusWaitQueue, + (Controller->V2.HealthStatusBuffer->StatusChangeCounter + != HealthStatusBuffer.StatusChangeCounter || + Controller->V2.HealthStatusBuffer->NextEventSequenceNumber + != HealthStatusBuffer.NextEventSequenceNumber), + DAC960_MonitoringTimerInterval); + if (signal_pending(current)) return -EINTR; if (copy_to_user(GetHealthStatus.HealthStatusBuffer, Controller->V2.HealthStatusBuffer, sizeof(DAC960_V2_HealthStatusBuffer_T))) _