}
 EXPORT_SYMBOL(tty_insert_flip_string_flags);
 
+/**
+ *     __tty_insert_flip_char   -      Add one character to the tty buffer
+ *     @port: tty port
+ *     @ch: character
+ *     @flag: flag byte
+ *
+ *     Queue a single byte to the tty buffering, with an optional flag.
+ *     This is the slow path of tty_insert_flip_char.
+ */
+int __tty_insert_flip_char(struct tty_port *port, unsigned char ch, char flag)
+{
+       struct tty_buffer *tb = port->buf.tail;
+       int flags = (flag == TTY_NORMAL) ? TTYB_NORMAL : 0;
+
+       if (!tty_buffer_request_room(port, 1))
+               return 0;
+
+       *flag_buf_ptr(tb, tb->used) = flag;
+       *char_buf_ptr(tb, tb->used++) = ch;
+
+       return 1;
+}
+EXPORT_SYMBOL(__tty_insert_flip_char);
+
 /**
  *     tty_schedule_flip       -       push characters to ldisc
  *     @port: tty port to push from
 
                unsigned char **chars, size_t size);
 extern void tty_flip_buffer_push(struct tty_port *port);
 void tty_schedule_flip(struct tty_port *port);
+int __tty_insert_flip_char(struct tty_port *port, unsigned char ch, char flag);
 
 static inline int tty_insert_flip_char(struct tty_port *port,
                                        unsigned char ch, char flag)
                *char_buf_ptr(tb, tb->used++) = ch;
                return 1;
        }
-       return tty_insert_flip_string_flags(port, &ch, &flag, 1);
+       return __tty_insert_flip_char(port, ch, flag);
 }
 
 static inline int tty_insert_flip_string(struct tty_port *port,