aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/n_hdlc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/n_hdlc.c')
-rw-r--r--drivers/char/n_hdlc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/char/n_hdlc.c b/drivers/char/n_hdlc.c
index 337a87f86a3..37f7d340304 100644
--- a/drivers/char/n_hdlc.c
+++ b/drivers/char/n_hdlc.c
@@ -780,13 +780,14 @@ static unsigned int n_hdlc_tty_poll(struct tty_struct *tty, struct file *filp,
780 poll_wait(filp, &tty->write_wait, wait); 780 poll_wait(filp, &tty->write_wait, wait);
781 781
782 /* set bits for operations that won't block */ 782 /* set bits for operations that won't block */
783 if(n_hdlc->rx_buf_list.head) 783 if (n_hdlc->rx_buf_list.head)
784 mask |= POLLIN | POLLRDNORM; /* readable */ 784 mask |= POLLIN | POLLRDNORM; /* readable */
785 if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) 785 if (test_bit(TTY_OTHER_CLOSED, &tty->flags))
786 mask |= POLLHUP; 786 mask |= POLLHUP;
787 if(tty_hung_up_p(filp)) 787 if (tty_hung_up_p(filp))
788 mask |= POLLHUP; 788 mask |= POLLHUP;
789 if(n_hdlc->tx_free_buf_list.head) 789 if (!tty_is_writelocked(tty) &&
790 n_hdlc->tx_free_buf_list.head)
790 mask |= POLLOUT | POLLWRNORM; /* writable */ 791 mask |= POLLOUT | POLLWRNORM; /* writable */
791 } 792 }
792 return mask; 793 return mask;
@@ -861,7 +862,7 @@ static void n_hdlc_buf_put(struct n_hdlc_buf_list *list,
861 spin_lock_irqsave(&list->spinlock,flags); 862 spin_lock_irqsave(&list->spinlock,flags);
862 863
863 buf->link=NULL; 864 buf->link=NULL;
864 if(list->tail) 865 if (list->tail)
865 list->tail->link = buf; 866 list->tail->link = buf;
866 else 867 else
867 list->head = buf; 868 list->head = buf;