There can be a race, if receive_buf call comes before tty initialization completes in n_tty_open and tty->disc_data may be NULL.
CPU0 cpu1 ---- ---- 000|n_tty_receive_buf_common() n_tty_open() -001|n_tty_receive_buf2() tty_ldisc_open.isra.3() -002|tty_ldisc_receive_buf(inline) tty_ldisc_setup() If tty->disc_data is NULL, then return from flush_to_ldisc Signed-off-by: Gaurav Kohli <gko...@codeaurora.org> diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c index 25d7368..5d49183 100644 --- a/drivers/tty/tty_port.c +++ b/drivers/tty/tty_port.c @@ -35,6 +35,9 @@ static int tty_port_default_receive_buf(struct tty_port *port, if (!disc) return 0; + if (!tty->disc_data) + return 0; + ret = tty_ldisc_receive_buf(disc, p, (char *)f, count); tty_ldisc_deref(disc); -- 1.9.1