Re: [PATCH] cgroup1: fix leaked context root causing sporadic NULL deref in LTP

From: Richard Purdie
Date: Wed Jun 30 2021 - 18:31:18 EST


On Wed, 2021-06-30 at 17:10 +0100, Mark Brown wrote:
> On Wed, Jun 16, 2021 at 11:23:34AM -0400, Tejun Heo wrote:
> > On Wed, Jun 16, 2021 at 08:51:57AM -0400, Paul Gortmaker wrote:
>
> > > A fix would be to not leave the stale reference in fc->root as follows:
>
> > >    --------------
> > >                   dput(fc->root);
> > >   + fc->root = NULL;
> > >                   deactivate_locked_super(sb);
> > >    --------------
>
> > > ...but then we are just open-coding a duplicate of fc_drop_locked() so we
> > > simply use that instead.
>
> > As this is unlikely to be a real-world problem both in probability and
> > circumstances, I'm applying this to cgroup/for-5.14 instead of
> > cgroup/for-5.13-fixes.
>
> FWIW at Arm we've started seeing what appears to be this issue blow up
> very frequently in some of our internal LTP CI runs against -next, seems
> to be mostly on lower end platforms. We seem to have started finding it
> at roughly the same time that the Yocto people did, I guess some other
> change made it more likely to trigger. Not exactly real world usage
> obviously but it's creating quite a bit of noise in testing which is
> disruptive so it'd be good to get it into -next as a fix.

It is a horrible bug to debug as you end up with "random" failures on the 
systems which are hard to pin down. Along with the RCU stall hangs it
was all a bit of a nightmare.

Out of interest are you also seeing the proc01 test hang on a non-blocking
read of /proc/kmsg periodically?

https://bugzilla.yoctoproject.org/show_bug.cgi?id=14460

I've not figured out a way to reproduce it at will yet and it seems strace
was enough to unblock it. It seems arm specific.

Cheers,

Richard