Просмотр исходного кода

[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>
Russell King 20 лет назад
Родитель
Сommit
f61051cd2f
1 измененных файлов с 1 добавлено и 0 удалено
  1. 1 0
      drivers/serial/serial_core.c

+ 1 - 0
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.
 		 * modem is ready for us.
 		 */
 		 */
 		spin_lock_irq(&port->lock);
 		spin_lock_irq(&port->lock);
+		port->ops->enable_ms(port);
 		mctrl = port->ops->get_mctrl(port);
 		mctrl = port->ops->get_mctrl(port);
 		spin_unlock_irq(&port->lock);
 		spin_unlock_irq(&port->lock);
 		if (mctrl & TIOCM_CAR)
 		if (mctrl & TIOCM_CAR)