Commit 64c3ae43 authored by Domen Puncer's avatar Domen Puncer Committed by Linus Torvalds

[PATCH] ftape/fdc-io: insert set_current_state() before schedule_timeout()

Inserts a set_current_state(TASK_INTERRUPTIBLE) before the schedule_timeout()
call.  Without this change, after the first iteration of the loop,
schedule_timeout() will not only return immediately, but the loop will break,
as the conditional will no longer be satisfied.  In fact, this conditional
makes little sense given the workings of schedule_timeout.  The timeout
variable is ignored, as well, and I'm fairly certain that it should be
included in the loop conditional.  That way, if the timeout expires before a
signal hits, -ETIME will be returned by fdc_interrupt_wait() instead of
-EINTR.
Signed-off-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: default avatarDomen Puncer <domen@coderock.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2fd06db3
......@@ -387,7 +387,8 @@ int fdc_interrupt_wait(unsigned int time)
set_current_state(TASK_INTERRUPTIBLE);
add_wait_queue(&ftape_wait_intr, &wait);
while (!ft_interrupt_seen && (current->state == TASK_INTERRUPTIBLE)) {
while (!ft_interrupt_seen && timeout) {
set_current_state(TASK_INTERRUPTIBLE);
timeout = schedule_timeout(timeout);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment