Re: [PATCH] tty: fix data race in n_tty_receive_buf_common

From: Alan Cox
Date: Fri Jan 05 2018 - 09:15:57 EST


> But in above case , there we can hit another race, if we have a sequence
> like this
> tty_init_dev->alloc_tty_struct -> tty_ldisc_init -> this will initialize
> ldisc ,
> but at this moment disc_data is still NULL
>
> And if flush_to_ldisc comes in between, it will take ldisc reference and
> proceeds receive buffer.

So you need to move the lock up one line to protect the assignment to
tty->port->itty. We can do that.

At that point your flush_to_ldisc should see either port->itty = NULL or a
valid initialized ldisc.

Alan