Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp2487812ybg; Sun, 27 Oct 2019 19:49:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqxY5h0/R0k5GgsevX7bocnJomtneTjF6TvASyCuuW+b+Ax/zRw2K+fMnWiT0f/4uVzTiO4U X-Received: by 2002:a05:6402:150a:: with SMTP id f10mr8576151edw.235.1572230961817; Sun, 27 Oct 2019 19:49:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572230961; cv=none; d=google.com; s=arc-20160816; b=QNzViMdKGjrADGDUufegEFEx++Gqc38sdM2KMEFeR01yldMW6fwJcNbsIIuGY1+ayn xG2zoHI72iFMIxDrvmYJ+kLFZVHUQtjqXVV0cbP1kD7/5xKiMiOGq5byCN5gUUFK5OtZ 3fJ7VSHPJjMWC9gEV5oeCsMNflh+R72of06QEllflnCQZQSC4POMg28itaIt81ja/VUx 1/xEYzjn9aXsgakJznHpAf8spKjP/9YervR1OlLVO0fQiQJ9eDQk5+RKgZLw2vqO811F 73eqoqakVxQP71mKpENBDBrFkM9ujmzUW7f1+9Ef+9HBWkAcYtsAYQmu95rhqC/xlPOl D4Fg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=L5xolo8bgSvqgBUl+RmoL+PZPK7WSFcF9N/vuFiWP8I=; b=rXgCf7dvxCQLwKOwXdb1D/OIsLj6meucZ3Ng6fjeDd2jrP6c9cQsf4LN3viObZ6WBw v4hcC5kjC8JtcB5Iid9AnfLyXibfENvqsw7d4N93tqhfy8MfmgGeA1Ng+XGebITFD/kU ujvoL0nMY2BP3Hp0PVEeaT3egCqjulUI40YJ/6xpbqwjQKLVWQVhEI9VYsSfBZjtHCBu weeje3YXfHnDeDt7UMgsFKPXKI0h0BV9Su4kD/jPIuE3BdomzQmL+Xmvj0qYp0SOAYMu RRdMO6XfimDlYEBgevL60S1V76yDrDS5tMiwyZlofRQkbyPupa22eRkkVFJxV7PctU+y R3Iw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zJoebEkB; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v9si3650673edf.36.2019.10.27.19.48.58; Sun, 27 Oct 2019 19:49:21 -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=@kernel.org header.s=default header.b=zJoebEkB; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728845AbfJ0VKm (ORCPT + 99 others); Sun, 27 Oct 2019 17:10:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:57146 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729730AbfJ0VKk (ORCPT ); Sun, 27 Oct 2019 17:10:40 -0400 Received: from localhost (100.50.158.77.rev.sfr.net [77.158.50.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 37F0E2064A; Sun, 27 Oct 2019 21:10:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572210639; bh=C8AlFHSTVIU41yGMArutLaH5VPrfkBTMd6hcoI+CyYY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zJoebEkBSk80iHHXgMOfiRZcu5jeaZ9AvKWiuqOj9xC9oZBYeb5sspe2vLjMO27fc nwtV7lUlY9sqRZk1dYBXBZAkXsdey1HNV/pStYXA/OhlrowT9+wr2KH85Y7Y1gPXZq OCqqPzP5Ybb23DXCnQCWIS/NolDVhglOClcCsfCY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Greg Kroah-Hartman , Josh Poimboeuf , Will Deacon , Ard Biesheuvel Subject: [PATCH 4.14 084/119] arm64/speculation: Support mitigations= cmdline option Date: Sun, 27 Oct 2019 22:01:01 +0100 Message-Id: <20191027203346.158163066@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191027203259.948006506@linuxfoundation.org> References: <20191027203259.948006506@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Josh Poimboeuf [ Upstream commit a111b7c0f20e13b54df2fa959b3dc0bdf1925ae6 ] Configure arm64 runtime CPU speculation bug mitigations in accordance with the 'mitigations=' cmdline option. This affects Meltdown, Spectre v2, and Speculative Store Bypass. The default behavior is unchanged. Signed-off-by: Josh Poimboeuf [will: reorder checks so KASLR implies KPTI and SSBS is affected by cmdline] Signed-off-by: Will Deacon Signed-off-by: Ard Biesheuvel Signed-off-by: Greg Kroah-Hartman --- Documentation/admin-guide/kernel-parameters.txt | 8 +++++--- arch/arm64/kernel/cpu_errata.c | 6 +++++- arch/arm64/kernel/cpufeature.c | 8 +++++++- 3 files changed, 17 insertions(+), 5 deletions(-) --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -2389,8 +2389,8 @@ http://repo.or.cz/w/linux-2.6/mini2440.git mitigations= - [X86,PPC,S390] Control optional mitigations for CPU - vulnerabilities. This is a set of curated, + [X86,PPC,S390,ARM64] Control optional mitigations for + CPU vulnerabilities. This is a set of curated, arch-independent options, each of which is an aggregation of existing arch-specific options. @@ -2399,12 +2399,14 @@ improves system performance, but it may also expose users to several CPU vulnerabilities. Equivalent to: nopti [X86,PPC] + kpti=0 [ARM64] nospectre_v1 [PPC] nobp=0 [S390] nospectre_v1 [X86] - nospectre_v2 [X86,PPC,S390] + nospectre_v2 [X86,PPC,S390,ARM64] spectre_v2_user=off [X86] spec_store_bypass_disable=off [X86,PPC] + ssbd=force-off [ARM64] l1tf=off [X86] mds=off [X86] --- a/arch/arm64/kernel/cpu_errata.c +++ b/arch/arm64/kernel/cpu_errata.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -347,6 +348,9 @@ static bool has_ssbd_mitigation(const st WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible()); + if (cpu_mitigations_off()) + ssbd_state = ARM64_SSBD_FORCE_DISABLE; + /* delay setting __ssb_safe until we get a firmware response */ if (is_midr_in_range_list(read_cpuid_id(), entry->midr_range_list)) this_cpu_safe = true; @@ -544,7 +548,7 @@ check_branch_predictor(const struct arm6 } /* forced off */ - if (__nospectre_v2) { + if (__nospectre_v2 || cpu_mitigations_off()) { pr_info_once("spectrev2 mitigation disabled by command line option\n"); __hardenbp_enab = false; return false; --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -841,7 +842,7 @@ static bool unmap_kernel_at_el0(const st MIDR_ALL_VERSIONS(MIDR_CORTEX_A72), MIDR_ALL_VERSIONS(MIDR_CORTEX_A73), }; - char const *str = "command line option"; + char const *str = "kpti command line option"; bool meltdown_safe; meltdown_safe = is_midr_in_range_list(read_cpuid_id(), kpti_safe_list); @@ -871,6 +872,11 @@ static bool unmap_kernel_at_el0(const st } } + if (cpu_mitigations_off() && !__kpti_forced) { + str = "mitigations=off"; + __kpti_forced = -1; + } + if (!IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0)) { pr_info_once("kernel page table isolation disabled by kernel configuration\n"); return false;