Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp5448608imm; Tue, 16 Oct 2018 10:22:27 -0700 (PDT) X-Google-Smtp-Source: ACcGV60eIy2Ln8wHjrbpg2irMlIl4x8/ADo21RYuAgMM+AzqxG58UGY/Hmxg90UJNF59tG1cYVSQ X-Received: by 2002:a62:c2c1:: with SMTP id w62-v6mr22705726pfk.35.1539710547073; Tue, 16 Oct 2018 10:22:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539710547; cv=none; d=google.com; s=arc-20160816; b=PMK7auOdUbG+kFfV0hb2pwAMBDJuGDY82s4mvjIOfEk9nrdTI2knNeUpYCdvCuaO6o QqTDYmWl6dWAoN96LVaAhQzMDlHYg+WQPUW6hYMvvB0BGEqtTDm/xs6HJIEWg79l4ERr ebVWj7ckcED2AYaRJoYf6JQhPcvVNj2IkNySNoxRkSrbgscq+PnfoN1PVc7XCGWrRCpa UhIr699IVKAO2Gd75rp4/GE1R/bUTWdCh4YGfMaPunLjI4jKbWLwu2SYx9FJH8hXXZ8z itPdxmvT6EhPtuQkXn1GSWdQA9aQIg2coGc90dbCQ1eaCYAw+8Fna1H0fzZjpYcl4NHa 5F/w== 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=Xz2PKe5XuGwwcxz7u2F/d2BLYKH8FTt3EO/GXN9a1Ys=; b=rXPFuJcZHbaHgFoJrD0vovc7P1lV4xsrodHGHCbD0Bf2Rq20sxO/dxaOGxVAAv9L5s FjSko55T9ts0qCZ40JDoa+A+i0U/j/guegz7aqerFh4tliiZBKETLiu7IgQ64EpFsMst q1wa9VXYgeDBoZYB8ns2WbMHqTLjS3Sb5G1gCw84t6tLk1ou/3uLDQAkHk7cFhti4Iec iOaWEWaZ93WrGWlJ73t8sxLcR3k4sGpl+B6rgVLgdgMMsgALb0jvF8USlXLySGOlMLQV G6kIR5/JKRtJZIHrZTXXRH8tcuDfiu7GRM6tNP4Of0k2TGKlw3S92IGNL3GCWv2fDX52 Rwmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=F9OkBuNe; 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 d185-v6si10013773pfd.260.2018.10.16.10.22.11; Tue, 16 Oct 2018 10:22:27 -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=F9OkBuNe; 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 S1730876AbeJQBMt (ORCPT + 99 others); Tue, 16 Oct 2018 21:12:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:58404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729296AbeJQBMs (ORCPT ); Tue, 16 Oct 2018 21:12:48 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 7576C20866; Tue, 16 Oct 2018 17:21:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539710483; bh=7uKK3G27JInx1cSMXVolowY2R/NkSKQUC0DtyTvM/Fk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F9OkBuNe0ZNGN+JOiVKt+PvcYoL5Dy51J7+zmNTOevB1ZWqQh4I+om3P5QdAs9WkH PpArivJs/tKqQj/sEr9xdoxoxGi2UH5qkTbIxPUkxQq0BSsMuouyvvrT1djQsu69kZ jqHPFP9nquM75Wc9sgooYtQrdsFlr153Sus1TQFg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Russell King , Tony Lindgren , Marc Zyngier , "David A. Long" Subject: [PATCH 4.14 094/109] ARM: spectre-v2: warn about incorrect context switching functions Date: Tue, 16 Oct 2018 19:06:02 +0200 Message-Id: <20181016170530.096183824@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181016170524.530541524@linuxfoundation.org> References: <20181016170524.530541524@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Russell King Commit c44f366ea7c85e1be27d08f2f0880f4120698125 upstream. Warn at error level if the context switching function is not what we are expecting. This can happen with big.Little systems, which we currently do not support. Signed-off-by: Russell King Boot-tested-by: Tony Lindgren Reviewed-by: Tony Lindgren Acked-by: Marc Zyngier Signed-off-by: David A. Long Signed-off-by: Greg Kroah-Hartman --- arch/arm/mm/proc-v7-bugs.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) --- a/arch/arm/mm/proc-v7-bugs.c +++ b/arch/arm/mm/proc-v7-bugs.c @@ -12,6 +12,8 @@ #ifdef CONFIG_HARDEN_BRANCH_PREDICTOR DEFINE_PER_CPU(harden_branch_predictor_fn_t, harden_branch_predictor_fn); +extern void cpu_v7_iciallu_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm); +extern void cpu_v7_bpiall_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm); extern void cpu_v7_smc_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm); extern void cpu_v7_hvc_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm); @@ -50,6 +52,8 @@ static void cpu_v7_spectre_init(void) case ARM_CPU_PART_CORTEX_A17: case ARM_CPU_PART_CORTEX_A73: case ARM_CPU_PART_CORTEX_A75: + if (processor.switch_mm != cpu_v7_bpiall_switch_mm) + goto bl_error; per_cpu(harden_branch_predictor_fn, cpu) = harden_branch_predictor_bpiall; spectre_v2_method = "BPIALL"; @@ -57,6 +61,8 @@ static void cpu_v7_spectre_init(void) case ARM_CPU_PART_CORTEX_A15: case ARM_CPU_PART_BRAHMA_B15: + if (processor.switch_mm != cpu_v7_iciallu_switch_mm) + goto bl_error; per_cpu(harden_branch_predictor_fn, cpu) = harden_branch_predictor_iciallu; spectre_v2_method = "ICIALLU"; @@ -82,6 +88,8 @@ static void cpu_v7_spectre_init(void) ARM_SMCCC_ARCH_WORKAROUND_1, &res); if ((int)res.a0 != 0) break; + if (processor.switch_mm != cpu_v7_hvc_switch_mm && cpu) + goto bl_error; per_cpu(harden_branch_predictor_fn, cpu) = call_hvc_arch_workaround_1; processor.switch_mm = cpu_v7_hvc_switch_mm; @@ -93,6 +101,8 @@ static void cpu_v7_spectre_init(void) ARM_SMCCC_ARCH_WORKAROUND_1, &res); if ((int)res.a0 != 0) break; + if (processor.switch_mm != cpu_v7_smc_switch_mm && cpu) + goto bl_error; per_cpu(harden_branch_predictor_fn, cpu) = call_smc_arch_workaround_1; processor.switch_mm = cpu_v7_smc_switch_mm; @@ -109,6 +119,11 @@ static void cpu_v7_spectre_init(void) if (spectre_v2_method) pr_info("CPU%u: Spectre v2: using %s workaround\n", smp_processor_id(), spectre_v2_method); + return; + +bl_error: + pr_err("CPU%u: Spectre v2: incorrect context switching function, system vulnerable\n", + cpu); } #else static void cpu_v7_spectre_init(void)