Re: [PATCH 4.19 092/229] once: add DO_ONCE_SLOW() for sleepable contexts

From: Greg Kroah-Hartman
Date: Tue Nov 01 2022 - 09:34:35 EST


On Tue, Nov 01, 2022 at 08:00:03PM +0800, Yongqin Liu wrote:
> Hi, Greg
>
> On Tue, 1 Nov 2022 at 14:26, Greg Kroah-Hartman
> <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Tue, Nov 01, 2022 at 02:07:35PM +0800, Yongqin Liu wrote:
> > > Hello,
> > >
> > > As mentioned in the thread for the 5.4 version here[1], it causes a
> > > crash for the 4.19 kernel too.
> > > Just paste the log here for reference:
> >
> > Can you try this patch please:
> >
> >
> > diff --git a/include/linux/once.h b/include/linux/once.h
> > index bb58e1c3aa03..3a6671d961b9 100644
> > --- a/include/linux/once.h
> > +++ b/include/linux/once.h
> > @@ -64,7 +64,7 @@ void __do_once_slow_done(bool *done, struct static_key_true *once_key,
> > #define DO_ONCE_SLOW(func, ...) \
> > ({ \
> > bool ___ret = false; \
> > - static bool __section(".data.once") ___done = false; \
> > + static bool __section(.data.once) ___done = false; \
> > static DEFINE_STATIC_KEY_TRUE(___once_key); \
> > if (static_branch_unlikely(&___once_key)) { \
> > ___ret = __do_once_slow_start(&___done); \
>
>
> This change works, it does not cause kernel panic again after this
> change is applied.

Great, thanks! Can I get a Tested-by: line for the changelog?

I'll queue this up in a bit and get it fixed in the next release.

thanks,

greg k-h