* [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt()
@ 2022-06-04 6:25 Jason A. Donenfeld
2022-06-06 6:54 ` Greg KH
0 siblings, 1 reply; 6+ messages in thread
From: Jason A. Donenfeld @ 2022-06-04 6:25 UTC (permalink / raw)
To: stable, gregkh
From: Stephen Boyd <swboyd@chromium.org>
commit 73e2d827a501d48dceeb5b9b267a4cd283d6b1ae upstream.
A static key warning splat appears during early boot on arm64 systems
that credit randomness from devicetrees that contain an "rng-seed"
property. This is because setup_machine_fdt() is called before
jump_label_init() during setup_arch(). Let's swap the order of these two
calls so that jump labels are initialized before the devicetree is
unflattened and the rng seed is credited.
static_key_enable_cpuslocked(): static key '0xffffffe51c6fcfc0' used before call to jump_label_init()
WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:166 static_key_enable_cpuslocked+0xb0/0xb8
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 5.18.0+ #224 44b43e377bfc84bc99bb5ab885ff694984ee09ff
pstate: 600001c9 (nZCv dAIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : static_key_enable_cpuslocked+0xb0/0xb8
lr : static_key_enable_cpuslocked+0xb0/0xb8
sp : ffffffe51c393cf0
x29: ffffffe51c393cf0 x28: 000000008185054c x27: 00000000f1042f10
x26: 0000000000000000 x25: 00000000f10302b2 x24: 0000002513200000
x23: 0000002513200000 x22: ffffffe51c1c9000 x21: fffffffdfdc00000
x20: ffffffe51c2f0831 x19: ffffffe51c6fcfc0 x18: 00000000ffff1020
x17: 00000000e1e2ac90 x16: 00000000000000e0 x15: ffffffe51b710708
x14: 0000000000000066 x13: 0000000000000018 x12: 0000000000000000
x11: 0000000000000000 x10: 00000000ffffffff x9 : 0000000000000000
x8 : 0000000000000000 x7 : 61632065726f6665 x6 : 6220646573752027
x5 : ffffffe51c641d25 x4 : ffffffe51c13142c x3 : ffff0a00ffffff05
x2 : 40000000ffffe003 x1 : 00000000000001c0 x0 : 0000000000000065
Call trace:
static_key_enable_cpuslocked+0xb0/0xb8
static_key_enable+0x2c/0x40
crng_set_ready+0x24/0x30
execute_in_process_context+0x80/0x90
_credit_init_bits+0x100/0x154
add_bootloader_randomness+0x64/0x78
early_init_dt_scan_chosen+0x140/0x184
early_init_dt_scan_nodes+0x28/0x4c
early_init_dt_scan+0x40/0x44
setup_machine_fdt+0x7c/0x120
setup_arch+0x74/0x1d8
start_kernel+0x84/0x44c
__primary_switched+0xc0/0xc8
---[ end trace 0000000000000000 ]---
random: crng init done
Machine model: Google Lazor (rev1 - 2) with LTE
Cc: Hsin-Yi Wang <hsinyi@chromium.org>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Jason A. Donenfeld <Jason@zx2c4.com>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>
Fixes: f5bda35fba61 ("random: use static branch for crng_ready()")
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
Link: https://lore.kernel.org/r/20220602022109.780348-1-swboyd@chromium.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
---
This got a "Fixes:" tag, but didn't have a corresponding Cc to stable.
Presumably AUTOSEL will eventually find this too, but sending it onward
proactively anyway.
arch/arm64/kernel/setup.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index eb4b24652c10..2360ff765979 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -300,13 +300,14 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
early_fixmap_init();
early_ioremap_init();
- setup_machine_fdt(__fdt_pointer);
-
/*
* Initialise the static keys early as they may be enabled by the
- * cpufeature code and early parameters.
+ * cpufeature code, early parameters, and DT setup.
*/
jump_label_init();
+
+ setup_machine_fdt(__fdt_pointer);
+
parse_early_param();
/*
--
2.35.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt()
2022-06-04 6:25 [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt() Jason A. Donenfeld
@ 2022-06-06 6:54 ` Greg KH
2022-06-07 8:56 ` Jason A. Donenfeld
0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2022-06-06 6:54 UTC (permalink / raw)
To: Jason A. Donenfeld; +Cc: stable
On Sat, Jun 04, 2022 at 08:25:03AM +0200, Jason A. Donenfeld wrote:
> From: Stephen Boyd <swboyd@chromium.org>
>
> commit 73e2d827a501d48dceeb5b9b267a4cd283d6b1ae upstream.
>
> A static key warning splat appears during early boot on arm64 systems
> that credit randomness from devicetrees that contain an "rng-seed"
> property. This is because setup_machine_fdt() is called before
> jump_label_init() during setup_arch(). Let's swap the order of these two
> calls so that jump labels are initialized before the devicetree is
> unflattened and the rng seed is credited.
>
> static_key_enable_cpuslocked(): static key '0xffffffe51c6fcfc0' used before call to jump_label_init()
> WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:166 static_key_enable_cpuslocked+0xb0/0xb8
> Modules linked in:
> CPU: 0 PID: 0 Comm: swapper Not tainted 5.18.0+ #224 44b43e377bfc84bc99bb5ab885ff694984ee09ff
> pstate: 600001c9 (nZCv dAIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> pc : static_key_enable_cpuslocked+0xb0/0xb8
> lr : static_key_enable_cpuslocked+0xb0/0xb8
> sp : ffffffe51c393cf0
> x29: ffffffe51c393cf0 x28: 000000008185054c x27: 00000000f1042f10
> x26: 0000000000000000 x25: 00000000f10302b2 x24: 0000002513200000
> x23: 0000002513200000 x22: ffffffe51c1c9000 x21: fffffffdfdc00000
> x20: ffffffe51c2f0831 x19: ffffffe51c6fcfc0 x18: 00000000ffff1020
> x17: 00000000e1e2ac90 x16: 00000000000000e0 x15: ffffffe51b710708
> x14: 0000000000000066 x13: 0000000000000018 x12: 0000000000000000
> x11: 0000000000000000 x10: 00000000ffffffff x9 : 0000000000000000
> x8 : 0000000000000000 x7 : 61632065726f6665 x6 : 6220646573752027
> x5 : ffffffe51c641d25 x4 : ffffffe51c13142c x3 : ffff0a00ffffff05
> x2 : 40000000ffffe003 x1 : 00000000000001c0 x0 : 0000000000000065
> Call trace:
> static_key_enable_cpuslocked+0xb0/0xb8
> static_key_enable+0x2c/0x40
> crng_set_ready+0x24/0x30
> execute_in_process_context+0x80/0x90
> _credit_init_bits+0x100/0x154
> add_bootloader_randomness+0x64/0x78
> early_init_dt_scan_chosen+0x140/0x184
> early_init_dt_scan_nodes+0x28/0x4c
> early_init_dt_scan+0x40/0x44
> setup_machine_fdt+0x7c/0x120
> setup_arch+0x74/0x1d8
> start_kernel+0x84/0x44c
> __primary_switched+0xc0/0xc8
> ---[ end trace 0000000000000000 ]---
> random: crng init done
> Machine model: Google Lazor (rev1 - 2) with LTE
>
> Cc: Hsin-Yi Wang <hsinyi@chromium.org>
> Cc: Douglas Anderson <dianders@chromium.org>
> Cc: Ard Biesheuvel <ardb@kernel.org>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Jason A. Donenfeld <Jason@zx2c4.com>
> Cc: Dominik Brodowski <linux@dominikbrodowski.net>
> Fixes: f5bda35fba61 ("random: use static branch for crng_ready()")
> Signed-off-by: Stephen Boyd <swboyd@chromium.org>
> Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
> Link: https://lore.kernel.org/r/20220602022109.780348-1-swboyd@chromium.org
> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> ---
> This got a "Fixes:" tag, but didn't have a corresponding Cc to stable.
> Presumably AUTOSEL will eventually find this too, but sending it onward
> proactively anyway.
Now queued up, thanks.
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt()
2022-06-06 6:54 ` Greg KH
@ 2022-06-07 8:56 ` Jason A. Donenfeld
2022-06-07 9:49 ` Greg KH
0 siblings, 1 reply; 6+ messages in thread
From: Jason A. Donenfeld @ 2022-06-07 8:56 UTC (permalink / raw)
To: Greg KH; +Cc: stable
You can actually drop this in favor of
https://lore.kernel.org/stable/20220607084005.666059-1-Jason@zx2c4.com/
rather than playing whack-a-mole by architectures that may have been
broken by it.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt()
2022-06-07 8:56 ` Jason A. Donenfeld
@ 2022-06-07 9:49 ` Greg KH
2022-06-07 9:51 ` Jason A. Donenfeld
0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2022-06-07 9:49 UTC (permalink / raw)
To: Jason A. Donenfeld; +Cc: stable
On Tue, Jun 07, 2022 at 10:56:21AM +0200, Jason A. Donenfeld wrote:
> You can actually drop this in favor of
> https://lore.kernel.org/stable/20220607084005.666059-1-Jason@zx2c4.com/
> rather than playing whack-a-mole by architectures that may have been
> broken by it.
So I need to drop this as well? Or is it ok to keep for now now that I
have queued up the other commit?
confused,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt()
2022-06-07 9:49 ` Greg KH
@ 2022-06-07 9:51 ` Jason A. Donenfeld
2022-06-07 10:05 ` Greg KH
0 siblings, 1 reply; 6+ messages in thread
From: Jason A. Donenfeld @ 2022-06-07 9:51 UTC (permalink / raw)
To: Greg KH; +Cc: stable
On Tue, Jun 7, 2022 at 11:49 AM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Tue, Jun 07, 2022 at 10:56:21AM +0200, Jason A. Donenfeld wrote:
> > You can actually drop this in favor of
> > https://lore.kernel.org/stable/20220607084005.666059-1-Jason@zx2c4.com/
> > rather than playing whack-a-mole by architectures that may have been
> > broken by it.
>
> So I need to drop this as well? Or is it ok to keep for now now that I
> have queued up the other commit?
The other commit ("Revert "random: use static branch for
crng_ready()"") fixes this problem on all architectures. This commit
fixes the problem on arm64. There's probably no harm in keeping this
commit, if you want it, but it's also no longer necessary, because
"Revert "random: use static branch for crng_ready()"" addresses the
issue more comprehensively.
Jason
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt()
2022-06-07 9:51 ` Jason A. Donenfeld
@ 2022-06-07 10:05 ` Greg KH
0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2022-06-07 10:05 UTC (permalink / raw)
To: Jason A. Donenfeld; +Cc: stable
On Tue, Jun 07, 2022 at 11:51:23AM +0200, Jason A. Donenfeld wrote:
> On Tue, Jun 7, 2022 at 11:49 AM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Tue, Jun 07, 2022 at 10:56:21AM +0200, Jason A. Donenfeld wrote:
> > > You can actually drop this in favor of
> > > https://lore.kernel.org/stable/20220607084005.666059-1-Jason@zx2c4.com/
> > > rather than playing whack-a-mole by architectures that may have been
> > > broken by it.
> >
> > So I need to drop this as well? Or is it ok to keep for now now that I
> > have queued up the other commit?
>
> The other commit ("Revert "random: use static branch for
> crng_ready()"") fixes this problem on all architectures. This commit
> fixes the problem on arm64. There's probably no harm in keeping this
> commit, if you want it, but it's also no longer necessary, because
> "Revert "random: use static branch for crng_ready()"" addresses the
> issue more comprehensively.
I'll just leave this as-is for now, that's simpler.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-06-07 10:05 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-04 6:25 [PATCH stable 5.10 5.15 5.17 5.18] arm64: Initialize jump labels before setup_machine_fdt() Jason A. Donenfeld
2022-06-06 6:54 ` Greg KH
2022-06-07 8:56 ` Jason A. Donenfeld
2022-06-07 9:49 ` Greg KH
2022-06-07 9:51 ` Jason A. Donenfeld
2022-06-07 10:05 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox