Re: [linux-next / tty] possible circular locking dependency detected

From: Vegard Nossum
Date: Sat Jun 03 2017 - 16:50:39 EST


On 06/03/17 11:34, Greg Kroah-Hartman wrote:
On Mon, May 29, 2017 at 12:43:39PM +0200, Vegard Nossum wrote:
On 05/22/17 12:27, Vegard Nossum wrote:
On 05/22/17 12:24, Greg Kroah-Hartman wrote:
On Mon, May 22, 2017 at 04:39:43PM +0900, Sergey Senozhatsky wrote:
Hello,

[ 1274.378287] ======================================================
[ 1274.378289] WARNING: possible circular locking dependency detected
[ 1274.378290]
4.12.0-rc1-next-20170522-dbg-00007-gc09b2ab28b74-dirty #1317 Not
tainted
[ 1274.378291] ------------------------------------------------------
[ 1274.378293] kworker/u8:5/111 is trying to acquire lock:
[ 1274.378294] (&buf->lock){+.+...}, at: [<ffffffff812f2831>]
tty_buffer_flush+0x34/0x88
[ 1274.378300]
but task is already holding lock:
[ 1274.378301] (&o_tty->termios_rwsem/1){++++..}, at:
[<ffffffff812ee5c7>] isig+0x47/0xd2
[ 1274.378307]
which lock already depends on the new lock.


Any hint as to what you were doing when this happened?

Does this also show up in 4.11?

It's my patch "tty: fix port buffer locking" :-/

At a glance, looks related to pty taking the lock on the other side in a
different order. I'll have a closer look.

I can reproduce the lockdep report locally on v4.12-rc3. Looking at it now.

Any ideas? Or should I just revert the original patch?

I think we must revert it for now, as I can easily reproduce not just
the lockdep warning but actual hangs. It seems I missed some code paths
when I worked the original patch.

I'm working on a fix.


Vegard