aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/keyspan_pda.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/serial/keyspan_pda.c')
-rw-r--r--drivers/usb/serial/keyspan_pda.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c
index 6ce292ef1c47..b650fb4754b4 100644
--- a/drivers/usb/serial/keyspan_pda.c
+++ b/drivers/usb/serial/keyspan_pda.c
@@ -636,14 +636,19 @@ static int keyspan_pda_write_room (struct usb_serial_port *port)
636static int keyspan_pda_chars_in_buffer (struct usb_serial_port *port) 636static int keyspan_pda_chars_in_buffer (struct usb_serial_port *port)
637{ 637{
638 struct keyspan_pda_private *priv; 638 struct keyspan_pda_private *priv;
639 unsigned long flags;
640 int ret = 0;
639 641
640 priv = usb_get_serial_port_data(port); 642 priv = usb_get_serial_port_data(port);
641 643
642 /* when throttled, return at least WAKEUP_CHARS to tell select() (via 644 /* when throttled, return at least WAKEUP_CHARS to tell select() (via
643 n_tty.c:normal_poll() ) that we're not writeable. */ 645 n_tty.c:normal_poll() ) that we're not writeable. */
646
647 spin_lock_irqsave(&port->lock, flags);
644 if (port->write_urb_busy || priv->tx_throttled) 648 if (port->write_urb_busy || priv->tx_throttled)
645 return 256; 649 ret = 256;
646 return 0; 650 spin_unlock_irqrestore(&port->lock, flags);
651 return ret;
647} 652}
648 653
649 654