Re: [PATCH V1] tty: fix data race between tty_init_dev and flush of buf

From: Alan Cox
Date: Sat Jan 20 2018 - 13:50:10 EST


On Wed, 17 Jan 2018 18:54:19 +0530
Gaurav Kohli <gkohli@xxxxxxxxxxxxxx> wrote:

> 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()
>
> Using ldisc semaphore lock in tty_init_dev till disc_data
> initializes completely.
>
> Signed-off-by: Gaurav Kohli <gkohli@xxxxxxxxxxxxxx>

Reviewed-by: Alan Cox <alan@xxxxxxxxxxxxxxx>

Alan