mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] random: drop check for static_key_initialized
@ 2025-11-10 11:56 Thomas Weißschuh
  2025-11-11  0:31 ` Jason A. Donenfeld
  0 siblings, 1 reply; 2+ messages in thread
From: Thomas Weißschuh @ 2025-11-10 11:56 UTC (permalink / raw)
  To: Theodore Ts'o, Jason A. Donenfeld; +Cc: linux-kernel, Thomas Weißschuh

Commit 77b644c39d6a ("init/main.c: Initialize early LSMs after arch code,
static keys and calls.") changed the initialization sequence to call
jump_label_init() before random_init_early(). This condition can therefore
never be false.

Remove the now unnecessary check.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
 drivers/char/random.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/random.c b/drivers/char/random.c
index b8b24b6ed3fe436c8102968392278d5cb5544f06..1ab7f169780aee3537ecfde52f43daffc4dfc95b 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -741,7 +741,7 @@ static void __cold _credit_init_bits(size_t bits)
 
 	if (orig < POOL_READY_BITS && new >= POOL_READY_BITS) {
 		crng_reseed(NULL); /* Sets crng_init to CRNG_READY under base_crng.lock. */
-		if (static_key_initialized && system_unbound_wq)
+		if (system_unbound_wq)
 			queue_work(system_unbound_wq, &set_ready);
 		atomic_notifier_call_chain(&random_ready_notifier, 0, NULL);
 #ifdef CONFIG_VDSO_GETRANDOM

---
base-commit: 3a8660878839faadb4f1a6dd72c3179c1df56787
change-id: 20251110-random-static_key_initialized-313a87bb59dc

Best regards,
-- 
Thomas Weißschuh <thomas.weissschuh@linutronix.de>


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] random: drop check for static_key_initialized
  2025-11-10 11:56 [PATCH] random: drop check for static_key_initialized Thomas Weißschuh
@ 2025-11-11  0:31 ` Jason A. Donenfeld
  0 siblings, 0 replies; 2+ messages in thread
From: Jason A. Donenfeld @ 2025-11-11  0:31 UTC (permalink / raw)
  To: Thomas Weißschuh; +Cc: Theodore Ts'o, linux-kernel

On Mon, Nov 10, 2025 at 12:56:34PM +0100, Thomas Weißschuh wrote:
> Commit 77b644c39d6a ("init/main.c: Initialize early LSMs after arch code,
> static keys and calls.") changed the initialization sequence to call
> jump_label_init() before random_init_early().

No it didnt:

        pr_notice("%s", linux_banner);
-       early_security_init();
        setup_arch(&command_line);
+       /* Static keys and static calls are needed by LSMs */
+       jump_label_init();
+       static_call_init();
+       early_security_init();
        setup_boot_config();
        setup_command_line(command_line);
        setup_nr_cpu_ids();
        setup_per_cpu_areas();
        smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
        early_numa_node_init();
        boot_cpu_hotplug_init();

        pr_notice("Kernel command line: %s\n", saved_command_line);
        /* parameters may set static keys */
-       jump_label_init();
        parse_early_param();
        after_dashes = parse_args("Booting kernel",
                                  static_command_line, __start___param,
                                  __stop___param - __start___param,
                                  -1, -1, NULL, &unknown_bootoption);
        print_unknown_bootoptions();
        if (!IS_ERR_OR_NULL(after_dashes))
                parse_args("Setting init args", after_dashes, NULL, 0, -1, -1,
                           NULL, set_init_arg);
        if (extra_init_args)
                parse_args("Setting extra init args", extra_init_args,
                           NULL, 0, -1, -1, NULL, set_init_arg);

        /* Architectural and non-timekeeping rng init, before allocator init */
        random_init_early(command_line);

jump_label_init() was called before random_init_early() before
77b644c39d6a. And workqueue_init_early() is much further down, after
jump_label_init().

As far as I can tell, jump labels have always been initialized before
workqueues. So your patch is right, but the explanation is not.

What really happened is that e871abcda3b6 ("random: handle creditable
entropy from atomic process context") moved things to a workqueue, but
added the workqueue condition without removing the
static_key_initialized one.

Anyway, I fixed this up and committed it here:
https://git.kernel.org/pub/scm/linux/kernel/git/crng/random.git/commit/?id=2db833312d7e6ae22111a6fd3e733b2a14986a29

Please submit patches against random.git in the future.

Regards,
Jason

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-11-11  0:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-10 11:56 [PATCH] random: drop check for static_key_initialized Thomas Weißschuh
2025-11-11  0:31 ` Jason A. Donenfeld

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®