]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
LoongArch: Move jump_label_init() before parse_early_param()
authorKanglong Wang <wangkanglong@loongson.cn>
Thu, 23 Jul 2026 14:27:29 +0000 (22:27 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Thu, 23 Jul 2026 14:27:29 +0000 (22:27 +0800)
When enabling both CONFIG_MEM_ALLOC_PROFILING=y and
CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT=y, then diabling memory
profiling by adding the boot parameter 'sysctl.vm.mem_profiling=0' will
cause the kernel failed to boot.

After analysis, this is because jump_label_init() must be called before
parse_early_param(), the early param handlers may modify static keys by
static_branch_enable/disable().

Fix this by moving jump_label_init() to before parse_early_param(). The
solution is similar to other architectures.

Cc: <stable@vger.kernel.org>
Signed-off-by: Kanglong Wang <wangkanglong@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/kernel/setup.c

index eaebb52bd36edb03ae978834c21de44086c877bb..6fa4a22a58fd6a3da565b6c93356666773bdfe23 100644 (file)
@@ -603,6 +603,7 @@ void __init setup_arch(char **cmdline_p)
        memblock_init();
        pagetable_init();
        bootcmdline_init(cmdline_p);
+       jump_label_init(); /* Initialise the static keys for early params */
        parse_early_param();
        reserve_initrd_mem();
 
@@ -610,8 +611,6 @@ void __init setup_arch(char **cmdline_p)
        arch_mem_init(cmdline_p);
 
        resource_init();
-       jump_label_init(); /* Initialise the static keys for paravirtualization */
-
 #ifdef CONFIG_SMP
        plat_smp_setup();
        prefill_possible_map();