Re: [syzbot] WARNING: suspicious RCU usage in copy_page_range

From: Peter Zijlstra
Date: Wed Mar 31 2021 - 03:33:22 EST


On Wed, Mar 31, 2021 at 08:11:38AM +0200, Dmitry Vyukov wrote:
> On Wed, Mar 31, 2021 at 12:26 AM syzbot
> <syzbot+1a33233ccd8201ec2322@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
> >
> > Hello,
> >
> > syzbot found the following issue on:
> >
> > HEAD commit: db24726b Merge tag 'integrity-v5.12-fix' of git://git.kern..
> > git tree: upstream
> > console output: https://syzkaller.appspot.com/x/log.txt?x=16c16b7cd00000
> > kernel config: https://syzkaller.appspot.com/x/.config?x=daeff30c2474a60f
> > dashboard link: https://syzkaller.appspot.com/bug?extid=1a33233ccd8201ec2322
> >
> > Unfortunately, I don't have any reproducer for this issue yet.
> >
> > IMPORTANT: if you fix the issue, please add the following tag to the commit:
> > Reported-by: syzbot+1a33233ccd8201ec2322@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> I think this is a LOCKDEP issue. +LOCKDEP maintainers.
>
> Another bug happened on another thread ("WARNING: possible circular
> locking dependency detected"). Lockdep disabled lock tracking
> ("debug_locks = 0" in the report), which probably made it miss
> rcu_unlock somewhere, but it did not turn off reporting yet and
> produced the false positive first.
>
> I think if LOCKDEP disables lock tracking, it must also disable
> reporting of issues that require lock tracking. That would avoid false
> positives.

Still early and brain hasn't really booted yet, but features that
require lock tracking are supposed to check debug_locks.

And afaict debug_lockdep_rcu_enabled(), which is called by
RCU_LOCKDEP_WARN(), which is called by rcu_sleep_check() does just that.