Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp186395imu; Wed, 21 Nov 2018 17:50:31 -0800 (PST) X-Google-Smtp-Source: AFSGD/VWWBOCv+D2QDQKcg+R4+XN6oKEQskqEuVnMVXMW2m2MSJqWMhOvrwcfChJN/vfWRfCKhlx X-Received: by 2002:a17:902:d206:: with SMTP id t6mr9330509ply.193.1542851431089; Wed, 21 Nov 2018 17:50:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542851431; cv=none; d=google.com; s=arc-20160816; b=npotD21PLGdT+H7gGTW2sk4XesPXT/CHndsECW7kfl7x9YqNei3rZARN2gSaULrIhL idzGHp6JHb7PsT6UuSQpCRbYEAD1Cfd3v0nwKibaj2skODgeBKBaxY1CEFTOzVl32uT2 ePh9MgG4KqVGQT5RiAAyKDCZinxvFH1c0pZLLt4sTGucieyuBIvXLeS+gF1zuGJX0/wh yQpTBjtfI2flSMhFdJkIFIRlLjUOm704lXtTFqv3FPWU4f87negZzOn97digPvCcFL85 XY7CpoalElnc3FIMz7FnpI3uL0pB9QdEFZrUmvPjq6wabj8qF6R3S5aJqW/cqBhV3mUT jfRA== 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=LKDwz9EQ8tkoCWvvrjDPKdvSgzaDzcNTN+zLbvUuEd4=; b=C5dLI9bgq563QLnVKN2DtG+d57upMlw5LHqTxrU8cVSFQiHSfIkfNM2de+nMGvoq1A PEOdHJpj4M2TovN/mNixhsORAazpaAA5Ak/wYFrTVmWGWYHrsvhtkvw0ada3NEkx/bEp RHlEGCEz0HOz9gMMK9ZwR9fi3NJogKuxh1DerQ8mIerS9iy0uSamKC0B7e+GB/SHwyEP wBwH6pEsDkNkV2XH6cQbntyFitbF0m/zTqgFLTLiOPp7CF36ejOEdjnbjTivqnF8NKns XuabVJt2AQkBjhOylEPKMmyX3FdndXOEwAT62uoQCgaLZCMK9zm5vODG0GgPaaOuyOtf ejkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=cYyhq0Ov; 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 u13si26329164plq.268.2018.11.21.17.49.51; Wed, 21 Nov 2018 17:50:31 -0800 (PST) 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=cYyhq0Ov; 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 S2388938AbeKVFqq (ORCPT + 99 others); Thu, 22 Nov 2018 00:46:46 -0500 Received: from mail.kernel.org ([198.145.29.99]:42088 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730565AbeKVFqp (ORCPT ); Thu, 22 Nov 2018 00:46:45 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (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 02F78214DB; Wed, 21 Nov 2018 19:11:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542827472; bh=/6Oid9HGOK0PcXTc2MfGzk30IyYadBlOg3FzQyLc9S4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cYyhq0OvBvSbMbn4j+jxFhALL5xQ1Ww9pP3xNbDUkkPMd7BdJPH0j/FVwNsi0qGgq MPTmG2AU/rbUwee7s+lUOEmaF+HiWBcoKYCur8FExV7O6v9AtwxZ19KMntoPg1R+tf SuBPPNhGRDrvmfpji+q0gORwVxQpgfzXOSJVXAXA= 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.9 45/59] ARM: spectre-v2: warn about incorrect context switching functions Date: Wed, 21 Nov 2018 20:07:00 +0100 Message-Id: <20181121183510.043768209@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181121183508.262873520@linuxfoundation.org> References: <20181121183508.262873520@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.9-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)