Re: WARNING: locking bug in __perf_event_task_sched_in

From: Peter Zijlstra
Date: Wed Mar 04 2020 - 08:54:07 EST


On Wed, Mar 04, 2020 at 04:48:13AM -0800, syzbot wrote:
> Hello,
>
> syzbot found the following crash on:
>
> HEAD commit: f8788d86 Linux 5.6-rc3
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=13bcd8f9e00000
> kernel config: https://syzkaller.appspot.com/x/.config?x=5d2e033af114153f
> dashboard link: https://syzkaller.appspot.com/bug?extid=3daecb3e8271380aeb51
> compiler: clang version 10.0.0 (https://github.com/llvm/llvm-project/ c2443155a0fb245c8f17f2c1c72b6ea391e86e81)
>
> Unfortunately, I don't have any reproducer for this crash yet.
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: syzbot+3daecb3e8271380aeb51@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> ------------[ cut here ]------------
> DEBUG_LOCKS_WARN_ON(1)
> WARNING: CPU: 0 PID: 22488 at kernel/locking/lockdep.c:167 hlock_class kernel/locking/lockdep.c:167 [inline]
> WARNING: CPU: 0 PID: 22488 at kernel/locking/lockdep.c:167 __lock_acquire+0x18b8/0x1bc0 kernel/locking/lockdep.c:3950

Something went sideways bad, could be you've overflowed lockdep_depth.
For some reason the check:

if (unlikely(curr->lockdep_depth >= MAX_LOCK_DEPTH))

is rather late.. Dunno, most times I've hit lockdep errors like this,
something else was screwy and we're just the ones to trip over it.