2017-06-03 14:12:26

by Greg Kroah-Hartman

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

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?

thanks,

greg k-h


2017-06-03 20:50:35

by Vegard Nossum

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

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