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

From: Yongqin Liu
Date: Tue Nov 01 2022 - 09:44:48 EST


On Tue, 1 Nov 2022 at 21:34, Greg Kroah-Hartman
<gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> 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?

Sure, Yongqin Liu <yongqin.liu@xxxxxxxxxx>

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

BTW, to be clear, I tested it with one 4.19-q tree based on the latest
ACK android-4.19-q branch[1],
If there is something else I could help test, please let me know.

[1]: https://android.googlesource.com/kernel/common/+/refs/heads/android-4.19-q
--
Best Regards,
Yongqin Liu
---------------------------------------------------------------
#mailing list
linaro-android@xxxxxxxxxxxxxxxx
http://lists.linaro.org/mailman/listinfo/linaro-android