Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp1239821ybd; Wed, 26 Jun 2019 13:53:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqxg/GRMIujIluNQ9gkNNd9Edc3aiVNQfd45CZ9PaSs9u+63dDQ1gGfw0Lrm6dof/rVo0yE7 X-Received: by 2002:a63:d211:: with SMTP id a17mr4816753pgg.269.1561582402918; Wed, 26 Jun 2019 13:53:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561582402; cv=none; d=google.com; s=arc-20160816; b=gCyLqhmKEbKECFT7PnP8WE1YobjPkYuEHZfZ+GpubtqP/Nf1FzQQdemNFzuPqZOSdq 4UMfxMwqvqhggUSvovYHzHOo+5ZxhZ3k6REL78wxgjIvo11hLtws1xAH1it9ZrNh1C1j pBnxBPE/FW8s1QIyGfxzwQQc00b14GXkKDQMlUjJ5514ZWO1d/vpn3tjYgEB98O3ZXUZ id8kQlQgDRq2xdZgT9ag3OQHY1viNBh5fBTmWMczRpcsLq5Lx/s0mCYcgKw7/VXqq7lz QXvjXSs4ZOtIclEex12q/sNCcWx1Ei5vwR6ozlkoYNq3j300L3y09/0bTY7eiqHo8QCV oU3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition:mime-version :message-id:subject:cc:to:from:date:dkim-signature; bh=H+r2vBcNECsVnDzkokFfKqo1L2Yq9wEm31BFuIPb9Hg=; b=TcQyWJZAqMO9oMNosz8d566u1bYL1QKV5bpYsUuY9cHzwJerzKHSc2kkS5qN63zmSU SiqmiZqIpyXrl29tCTnzijCeMwoduoFOvmsWBI6Tv6wVkYQN3Eq2DKVTh3nm5xnJkFl0 4JgdsM2jMiATpky7Fcwr0FjUrj81cIsYQsc/qDg8o9pWuQO4xxeW2+kk1oTsii1yfLJb sWbcAw4Q4WcW4xJPA6v+Q42a7m0lOkSVDw0tdwJY+HKiaXLW77MblZWf+jNmanjTb7qm 8TUz2Uphb4fD2OKZ8Inlufeu2ko27Ii4rRyHMHDb/n7J5/DqgMZQgeFjhaCTmAw/3jfN PKxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=nNXaWS4V; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o6si68488pls.251.2019.06.26.13.53.06; Wed, 26 Jun 2019 13:53:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=nNXaWS4V; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726441AbfFZUvS (ORCPT + 99 others); Wed, 26 Jun 2019 16:51:18 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:40341 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726223AbfFZUvR (ORCPT ); Wed, 26 Jun 2019 16:51:17 -0400 Received: by mail-pf1-f195.google.com with SMTP id p184so36433pfp.7 for ; Wed, 26 Jun 2019 13:51:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:mime-version:content-disposition; bh=H+r2vBcNECsVnDzkokFfKqo1L2Yq9wEm31BFuIPb9Hg=; b=nNXaWS4VLhbT+JGsByuctQWNZJHp7JsAJavoqlKD21oUt7aSpAhw8jmWQk8SXJ6oRk z3jppV8bRyYbt+XckWcqle1lQZmOmlTr+6/F4sOrcd31lvBCgfPq8zrN7SbBtidllJfR h4t7Og1prhN0GtZm0/EPWsc/0BG56puURlNW8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition; bh=H+r2vBcNECsVnDzkokFfKqo1L2Yq9wEm31BFuIPb9Hg=; b=hvPeWWWKtbGBAA303le6sWlhDooyB7E1FFZG5DoUPGQCxByPUN+ioDW3eDTgOqOMS3 HuKbh/PRb8WurDHotma6eFfHV0Z/rlr9Td1OPhP4uZtuEbbaExvlb50RlzNsiC6dgJOY X6DJbbVW82hph1dzM8Msi39Pbe69He5toY3B0WQWTRv0ifRol0jsSbVd4LDRMJV1ezlH Uv1n1xwartZExIgzgLPs5Sw9b6KvxEjsdskk8I8LsPPfP1bqIMxwiN4v4Al/0+UHruPb 0FDq1GvRubCRVh3CTLQNEWEW1e9vz8quTdIfSwr+p4uZwVswuZZD5psszerYdWNgB5Ob GMgw== X-Gm-Message-State: APjAAAVtABvGGkGblRTfG/00FMaVpd+5wPmMsCD4Wi1fhRmp8I+ARar4 lWIENpeghzc0Bli8jef1vJkLFg== X-Received: by 2002:a65:6104:: with SMTP id z4mr4816917pgu.319.1561582276839; Wed, 26 Jun 2019 13:51:16 -0700 (PDT) Received: from www.outflux.net (smtp.outflux.net. [198.145.64.163]) by smtp.gmail.com with ESMTPSA id k22sm124279pfk.157.2019.06.26.13.51.15 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 26 Jun 2019 13:51:16 -0700 (PDT) Date: Wed, 26 Jun 2019 13:51:15 -0700 From: Kees Cook To: Catalin Marinas Cc: linux-kernel@vger.kernel.org, Alexander Potapenko , Qian Cai , Ard Biesheuvel Subject: [PATCH] arm64: Move jump_label_init() before parse_early_param() Message-ID: <201906261343.5F26328@keescook> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While jump_label_init() was moved earlier in the boot process in commit 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 Signed-off-by: Kees Cook --- arch/arm64/kernel/setup.c | 5 +++++ arch/arm64/kernel/smp.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 7e541f947b4c..9c4bad7d7131 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -283,6 +283,11 @@ void __init setup_arch(char **cmdline_p) setup_machine_fdt(__fdt_pointer); + /* + * Initialise the static keys early as they may be enabled by the + * cpufeature code and early parameters. + */ + jump_label_init(); parse_early_param(); /* diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index 6dcf9607d770..20c456b3862c 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -424,11 +424,6 @@ void __init smp_cpus_done(unsigned int max_cpus) void __init smp_prepare_boot_cpu(void) { set_my_cpu_offset(per_cpu_offset(smp_processor_id())); - /* - * Initialise the static keys early as they may be enabled by the - * cpufeature code. - */ - jump_label_init(); cpuinfo_store_boot_cpu(); /* -- 2.17.1 -- Kees Cook