Any comments would be, as always, appreciated. -Nish Description: Inserts set_current_state() before schedule_timeout(). Without the insertion, schedule_timeout() will return immediately. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer --- kj-domen/drivers/input/joystick/iforce/iforce-packets.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff -puN drivers/input/joystick/iforce/iforce-packets.c~set_current_state-drivers_input_joystick_iforce_iforce-packets drivers/input/joystick/iforce/iforce-packets.c --- kj/drivers/input/joystick/iforce/iforce-packets.c~set_current_state-drivers_input_joystick_iforce_iforce-packets 2004-12-25 01:35:19.000000000 +0100 +++ kj-domen/drivers/input/joystick/iforce/iforce-packets.c 2004-12-25 01:35:19.000000000 +0100 @@ -269,8 +269,10 @@ int iforce_get_id_packet(struct iforce * return -1; } - while (timeout && iforce->ctrl->status == -EINPROGRESS) + while (timeout && iforce->ctrl->status == -EINPROGRESS) { + set_current_state(TASK_INTERRUPTIBLE); timeout = schedule_timeout(timeout); + } set_current_state(TASK_RUNNING); remove_wait_queue(&iforce->wait, &wait); @@ -293,8 +295,10 @@ int iforce_get_id_packet(struct iforce * set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&iforce->wait, &wait); - while (timeout && iforce->expect_packet) + while (timeout && iforce->expect_packet) { + set_current_state(TASK_INTERRUPTIBLE); timeout = schedule_timeout(timeout); + } set_current_state(TASK_RUNNING); remove_wait_queue(&iforce->wait, &wait); _