diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index 4bf0fc0..6d4b647 100644
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -1667,7 +1667,7 @@ static inline int input_available_p(struct tty_struct
*tty, int amt)
 {
        struct n_tty_data *ldata = tty->disc_data;

-       tty_flush_to_ldisc(tty);
+       // tty_flush_to_ldisc(tty);
        if (ldata->icanon && !L_EXTPROC(tty)) {
                if (ldata->canon_data)
                        return 1;
diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
index 9121c1f..6c2da95 100644
--- a/drivers/tty/tty_buffer.c
+++ b/drivers/tty/tty_buffer.c
@@ -449,8 +449,10 @@ static void flush_to_ldisc(struct work_struct *work)
                                tty_buffer_free(port, head);
                                continue;
                        }
-                       if (!tty->receive_room)
+                       if (!tty->receive_room) {
+                                schedule_work(&buf->work);
                                break;
+                        }
                        if (count > tty->receive_room)
                                count = tty->receive_room;
                        char_buf = head->char_buf_ptr + head->read;

