summaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-07-15 03:00:04 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-07-15 03:00:04 +0000
commitb9bc325e1946507c23965bdeda759f7dbbbbb6a7 (patch)
tree13ef25ff2fac456c03c1b6f72508620cd1d77042 /drivers/char
parentd8a67d159433e18c716493c5b39e59d6df7ebeb8 (diff)
Make sure we don't add timers back in history. This gets serial
console working again. Tytso is notified.
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/serial.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/char/serial.c b/drivers/char/serial.c
index 105137a92..d8f077deb 100644
--- a/drivers/char/serial.c
+++ b/drivers/char/serial.c
@@ -1066,15 +1066,19 @@ static void rs_timer(unsigned long dummy)
mod_timer(&serial_timer, jiffies + RS_STROBE_TIME);
if (IRQ_ports[0]) {
+ unsigned long next;
save_flags(flags); cli();
#ifdef CONFIG_SERIAL_SHARE_IRQ
rs_interrupt(0, NULL, NULL);
#else
rs_interrupt_single(0, NULL, NULL);
#endif
+
+ next = jiffies + IRQ_timeout[0] - 2;
+ if (next < jiffies + 1)
+ next = jiffies + 1;
+ mod_timer(&serial_timer, next);
restore_flags(flags);
-
- mod_timer(&serial_timer, jiffies + IRQ_timeout[0] - 2);
}
}