From: Domen Puncer <domen@coderock.org>

Use msleep_interruptible() instead of schedule_timeout() to guarantee the task
delays as expected.

Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: Maximilian Attems <janitor@sternwelten.at>
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/tc/zs.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff -puN drivers/tc/zs.c~tc-zs-replace-schedule_timeout-with-msleep_interruptible drivers/tc/zs.c
--- 25/drivers/tc/zs.c~tc-zs-replace-schedule_timeout-with-msleep_interruptible	2005-03-06 19:57:35.000000000 -0800
+++ 25-akpm/drivers/tc/zs.c	2005-03-06 19:57:35.000000000 -0800
@@ -1368,8 +1368,7 @@ static void rs_close(struct tty_struct *
 	info->tty = 0;
 	if (info->blocked_open) {
 		if (info->close_delay) {
-			current->state = TASK_INTERRUPTIBLE;
-			schedule_timeout(info->close_delay);
+			msleep_interruptible(jiffies_to_msecs(info->close_delay));
 		}
 		wake_up_interruptible(&info->open_wait);
 	}
@@ -1403,8 +1402,7 @@ static void rs_wait_until_sent(struct tt
 	if (timeout)
 		char_time = min(char_time, timeout);
 	while ((read_zsreg(info->zs_channel, 1) & Tx_BUF_EMP) == 0) {
-		current->state = TASK_INTERRUPTIBLE;
-		schedule_timeout(char_time);
+		msleep_interruptible(jiffies_to_msecs(char_time));
 		if (signal_pending(current))
 			break;
 		if (timeout && time_after(jiffies, orig_jiffies + timeout))
_