arm64: move jump_label_init() before parse_early_param()
authorKees Cook <keescook@chromium.org>
Fri, 12 Jul 2019 03:59:15 +0000 (20:59 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 12 Jul 2019 18:05:46 +0000 (11:05 -0700)
commitba5c5e4a5da443e80a3722e67515de5e37375b18
tree8f9b97b9a50c3f81e7c7bb7fedec4765e55bbc32
parente03a5125ec7bd1d4e8b062816a8813436876dc7c
arm64: move jump_label_init() before parse_early_param()

While jump_label_init() was moved earlier in the boot process in
efd9e03facd0 ("arm64: Use static keys for CPU features"), it wasn't early
enough for early params to use it.  The old state of things was as
described here...

init/main.c calls out to arch-specific things before general jump label
and early param handling:

  asmlinkage __visible void __init start_kernel(void)
  {
        ...
        setup_arch(&command_line);
        ...
        smp_prepare_boot_cpu();
        ...
        /* parameters may set static keys */
        jump_label_init();
        parse_early_param();
        ...
  }

x86 setup_arch() wants those earlier, so it handles jump label and
early param:

  void __init setup_arch(char **cmdline_p)
  {
        ...
        jump_label_init();
        ...
        parse_early_param();
        ...
  }

arm64 setup_arch() only had early param:

  void __init setup_arch(char **cmdline_p)
  {
        ...
        parse_early_param();
        ...
}

with jump label later in smp_prepare_boot_cpu():

  void __init smp_prepare_boot_cpu(void)
  {
        ...
        jump_label_init();
        ...
  }

This moves arm64 jump_label_init() from smp_prepare_boot_cpu() to
setup_arch(), as done already on x86, in preparation from early param
usage in the init_on_alloc/free() series:
https://lkml.kernel.org/r/1561572949.5154.81.camel@lca.pw

Link: http://lkml.kernel.org/r/201906271003.005303B52@keescook
Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Qian Cai <cai@lca.pw>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/arm64/kernel/setup.c
arch/arm64/kernel/smp.c