Re: PID_NS unshare VS synchronize_rcu_tasks() (was: Re: [Syzkaller & bisect] There is task hung in "synchronize_rcu" in v6.1-rc5 kernel)

From: Paul E. McKenney
Date: Wed Nov 23 2022 - 17:17:46 EST


On Wed, Nov 23, 2022 at 11:06:48PM +0100, Frederic Weisbecker wrote:
> On Wed, Nov 23, 2022 at 11:45:50PM +0800, Pengfei Xu wrote:
> > On 2022-11-23 at 15:37:58 +0100, Frederic Weisbecker wrote:
> > > I have no idea how to solve the situation without violating the pid_namespace
> > > rules and unshare() semantics (although I wish unshare(CLONE_NEWPID) had a less
> > > error prone behaviour with allowing creating more than one task belonging to the
> > > same namespace).
> > >
> > > So probably having an SRCU read side critical section within exit_notify() is
> > > not a good idea, is there a solution to work around that for rcu tasks?
> > >
> > Thanks for the analysis!
> > Add one more information: I tried to revert this commit only on top of
> > v6.1-rc5 mainline by script, but it caused kernel make to fail, it could not
> > confirm the bisect information is 100% accurate if I could not pass the
> > revert step verification. I just provide all the information I could.
>
> No problem, I managed to reproduce with latest upstream.
> I don't think the bisected commit is the culprit though, it may perhaps just make
> the issue more likely to happen.

Frederic, Boqun, Neeraj, and I dug through this earlier today, and
record of our wanderings may be found here:

https://docs.google.com/document/d/1hJxgiZ5TMZ4YJkdJPLAkRvq7sYQ-A7svgA8no6i-v8k/edit?usp=sharing

It looks like we can break the deadlock within RCU Tasks, but it also
looks like the namespace-PID semantics are at best an accident waiting
to happen. ;-)

Thanx, Paul

> Thanks.
>
> >
> > And this issue is too difficult to me.
> > If I find more clue, I will update the eamil.
> >
> > Thanks!
> > BR.
> >
> > > Thanks.