Re: [PATCH] random: drop check for static_key_initialized

From: Jason A. Donenfeld
Date: Mon Nov 10 2025 - 19:31:59 EST


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