aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-01-07 23:11:23 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-01-07 23:11:23 +0000
commitf61051cd2fc58546f28c226933942d4360810ffb (patch)
treebac31cc9c3c857d21b1b084260f443ebc8d25e6c
parentb9abaa3fb7328851bdeaad19e694048f0ff71d9a (diff)
downloadlinux-f61051cd2fc58546f28c226933942d4360810ffb.tar.gz
[SERIAL] Fix clocal wakeup problem
Jim Alexander reported a problem where "if one calls open() in blocking mode with CLOCAL off, the 8250.c driver under the 2.6 kernel (or at least 2.6.8 and 2.6.10) does not wake up the blocked process when DCD is asserted." Fix this by enabling modem status interrupts immediately before we read the carrier detect status. Thanks to Jim for reporting the problem and testing the fix. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--drivers/serial/serial_core.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 34c576dfad8dbd..9589509fc5bd7b 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -1440,6 +1440,7 @@ uart_block_til_ready(struct file *filp, struct uart_state *state)
* modem is ready for us.
*/
spin_lock_irq(&port->lock);
+ port->ops->enable_ms(port);
mctrl = port->ops->get_mctrl(port);
spin_unlock_irq(&port->lock);
if (mctrl & TIOCM_CAR)