summaryrefslogtreecommitdiff
path: root/drivers/serial/serial_core.c
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-01-07 23:11:23 (GMT)
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-01-07 23:11:23 (GMT)
commitf61051cd2fc58546f28c226933942d4360810ffb (patch)
treebac31cc9c3c857d21b1b084260f443ebc8d25e6c /drivers/serial/serial_core.c
parentb9abaa3fb7328851bdeaad19e694048f0ff71d9a (diff)
downloadlinux-f61051cd2fc58546f28c226933942d4360810ffb.tar.xz
[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>
Diffstat (limited to 'drivers/serial/serial_core.c')
-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 34c576d..9589509 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)