From: Ingo Molnar <mingo@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org, linux-tip-commits@vger.kernel.org,
Lukas Wunner <lukas@wunner.de>,
Linus Torvalds <torvalds@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
"Paul E. McKenney" <paulmck@kernel.org>,
x86@kernel.org, Borislav Petkov <bp@alien8.de>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [tip: core/urgent] panic: Reenable preemption in WARN slowpath
Date: Fri, 15 Sep 2023 13:13:25 +0200 [thread overview]
Message-ID: <ZQQ8VZdWbj9U/AuB@gmail.com> (raw)
In-Reply-To: <20230915103512.GC6721@noisy.programming.kicks-ass.net>
* Peter Zijlstra <peterz@infradead.org> wrote:
> > > panic: Reenable preemption in WARN slowpath
> > >
> > > Commit:
> > >
> > > 5a5d7e9badd2 ("cpuidle: lib/bug: Disable rcu_is_watching() during WARN/BUG")
> > >
> > > amended warn_slowpath_fmt() to disable preemption until the WARN splat
> > > has been emitted.
> > >
> > > However the commit neglected to reenable preemption in the !fmt codepath,
> > > i.e. when a WARN splat is emitted without additional format string.
> > >
> > > One consequence is that users may see more splats than intended. E.g. a
> > > WARN splat emitted in a work item results in at least two extra splats:
> > >
> > > BUG: workqueue leaked lock or atomic
> > > (emitted by process_one_work())
> > >
> > > BUG: scheduling while atomic
> > > (emitted by worker_thread() -> schedule())
> > >
> > > Ironically the point of the commit was to *avoid* extra splats. ;)
> > >
> > > Fix it.
> >
> > > diff --git a/kernel/panic.c b/kernel/panic.c
> > > index 07239d4..ffa037f 100644
> > > --- a/kernel/panic.c
> > > +++ b/kernel/panic.c
> > > @@ -697,6 +697,7 @@ void warn_slowpath_fmt(const char *file, int line, unsigned taint,
> > > if (!fmt) {
> > > __warn(file, line, __builtin_return_address(0), taint,
> > > NULL, NULL);
> > > + warn_rcu_exit(rcu);
> > > return;
> >
> > BTW., one more thing we might want to consider here is to re-enable
> > preemption in warn_rcu_exit() a bit more gently, without forcing a
> > pending reschedule, ie. preempt_enable_no_resched() or so?
>
> nah, it's a warn, if that triggers you get to keep the pieces.
But but ... my overall point is that since we just WARN()ed, we are facing
some sort of kernel bug, and scheduling policies are only a secondary
concern, debuggability & getting the bug fixed is the primary concern.
So the scheduler should switch to a debugging-friendlier behavior:
'Schedule tasks around as little as possible, to keep the debug output
tidy & to keep things working a bit better even if it's all broken
already'.
... or so. My suggestion was a small subset of that principle.
> [...] Also preempt_enable_no_resched() isn't exported because its a
> horribly dangerous function.
Special exception for RCU debugging only, or so - it's a core kernel
facility after all.
No strong feelings either way though.
Thanks,
Ingo
next prev parent reply other threads:[~2023-09-15 11:13 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-15 7:55 [PATCH] panic: Reenable preemption in WARN slowpath Lukas Wunner
2023-09-15 9:36 ` [tip: core/urgent] " tip-bot2 for Lukas Wunner
2023-09-15 9:45 ` Ingo Molnar
2023-09-15 10:35 ` Peter Zijlstra
2023-09-15 11:13 ` Ingo Molnar [this message]
2023-09-15 9:38 ` [PATCH] " Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZQQ8VZdWbj9U/AuB@gmail.com \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox