Re: tty: deadlock between n_tracerouter_receivebuf and flush_to_ldisc

From: Peter Zijlstra
Date: Wed Jan 20 2016 - 06:44:39 EST


On Wed, Jan 20, 2016 at 10:36:01AM +0100, Dmitry Vyukov wrote:

> +Peter, Ingo, can you please suggest a way to annotate this locking
> pattern to avoid lockdep false positive?

No, because I haven't a clue what the actual problem is.

The report is fairly clear on how:

routelock
&port->buf.lock/1
&o_tty->termios_rwsem/1
&buf->lock

gets established, and shows where we try:

&buf->lock
routelock

Which gives a circle, ergo deadlock.

Show which link is wrong and why, and I can suggest ways of annotating
that.