Re: [PATCH 4.9 75/95] random: set up the NUMA crng instances after the CRNG is fully initialized

From: Ingo Molnar
Date: Thu Apr 26 2018 - 02:04:49 EST



* Theodore Y. Ts'o <tytso@xxxxxxx> wrote:

> On Mon, Apr 23, 2018 at 07:21:10PM +0900, Tetsuo Handa wrote:
> > Greg Kroah-Hartman wrote:
> > > > I think this can be fixed by backporting commit 4a072c71f49b
> > > > "random: silence compiler warnings and fix race" but I'm not sure
> > > > whether that depends on other changes.
> > >
> > > According to Tetsuo Handa, it's also causing problems in mainline :(
> > >
> > > Ted, any thoughts as to what to do here?
> >
> > (Resending because Webmail post was rejected by both stable ML and linux-kernel ML.)
> >
> > Subject: random: GFP_KERNEL|__GFP_NOFAIL allocation from IRQ context
> >
> > Hello.
> >
> > Commit 8ef35c866f8862df ("random: set up the NUMA crng instances after
> > the CRNG is fully initialized") is causing sleep inside atomic warning
> > due to GFP_KERNEL|__GFP_NOFAIL allocation from IRQ context. Though it
> > unlikely sleeps because there will be enough free memory at boot up...
> >
> > Please don't backport that patch now.
>
> Yes, please hold off on this in the stable queues as well. What we'll
> probably need to do is call defer the processing to a workqueue in the
> CONFIG_NUMA case.

What's the resolution here? It's still triggering upstream as well, as of
69bfd470f462:

[ 8.881634] dracut: Switching root

[ 8.994899] ================================
[ 8.999338] WARNING: inconsistent lock state
[ 9.003760] 4.17.0-rc2-00151-g43ae031-dirty #1 Not tainted
[ 9.009389] --------------------------------
[ 9.013803] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
[ 9.019956] swapper/2/0 [HC1[1]:SC0[0]:HE0:SE1] takes:
[ 9.025244] (ptrval) (fs_reclaim){?.+.}, at: fs_reclaim_acquire.part.87+0x5/0x30
[ 9.033598] {HARDIRQ-ON-W} state was registered at:
[ 9.038628] fs_reclaim_acquire.part.87+0x29/0x30
[ 9.043568] kmem_cache_alloc_trace+0x2c/0x240
[ 9.048248] alloc_workqueue_attrs+0x29/0x60
[ 9.052755] workqueue_init+0x4a/0x2e4
[ 9.056741] kernel_init_freeable+0x108/0x286
[ 9.061335] kernel_init+0xa/0x110
[ 9.064974] ret_from_fork+0x27/0x50

....

Is there a fix or a revert that can be tested?

Thanks,

Ingo