Received: by 2002:a17:90a:9103:0:0:0:0 with SMTP id k3csp11809828pjo; Thu, 2 Jan 2020 14:40:01 -0800 (PST) X-Google-Smtp-Source: APXvYqys0m5JOPgaB3oai6JEwHcg6DmMJqJ3lPdJbVAd+C+etPL+/L+FSPGye85B0O4SnzlMVW6m X-Received: by 2002:a9d:242:: with SMTP id 60mr79898986otb.253.1578004801192; Thu, 02 Jan 2020 14:40:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578004801; cv=none; d=google.com; s=arc-20160816; b=K+oOiR6oS5qajTfP6U/Z5lhLzAzShTba8T8c371T6xbRVPjLiatGVTED0QlgEHAUri Y7zD3qkipcNe8r4DQ/9Y98HFHW2ZZoI+UguQpiNXdJ431WbboHUpGYQPOicnHqL1k3Wa df1gJKBqS0kcMg3omyLPCX7jJxsY7OhidQQt1Z3WLh/2j+cFWsVx7YfzCt/oLHD1PvhT ReKBDqlI0CCyK3/9JYBnW8hqYiySIx0x3TtRwo/7APAAHrlSt4JVYuXnU/w1hEI9dbNv pQSMynakVdIj3Mbukd640c8MVN8d87T6DKaDK8ELpRfFrj9B2l0TdN9vjtcTbl3qBWbA ukZw== 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=CORtI2TPxAZebK/69hUfmLssrlqBngKuAANaoO9t2fo=; b=OGoVHsEeRa+UpBfPgjMly2TdrvfLhQ1WmUCMPrYJ8hiGOtAtJdsdSxKEN5OiZbXk1W xrpw6ZQVcHx56XTOaTAR2cCZo/TsUafMIyAz+exCtEAOFtnHPcYqKYXph9VnkRqcnYvm KKvRCRcGoRg02qXp6FEdluL/W6ugIpoJZd2GEE77Q2hTqGQ4+JAZ8oQz1Kh58LHhjgqV AoXFqMUH1w1RVdHg0jh6j5P4xq9ZbqV2z26BRdYfB025SsZd/Sq04ns39yMH9F47EyJl TTNXykUlWXKuVufZQsLua6i0y6oznDxvWG7T5RjlHmjItCbgyuTMDlAWl4O6aCTNceMF MEqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=HY8e8aNz; 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 30si17362678otr.75.2020.01.02.14.39.49; Thu, 02 Jan 2020 14:40:01 -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=HY8e8aNz; 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 S1731372AbgABWi6 (ORCPT + 99 others); Thu, 2 Jan 2020 17:38:58 -0500 Received: from mail.kernel.org ([198.145.29.99]:53696 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730998AbgABWiw (ORCPT ); Thu, 2 Jan 2020 17:38:52 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.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 F00D722B48; Thu, 2 Jan 2020 22:38:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578004731; bh=Ty0n/R4nCrM8KnO4jFTWTV5N+ViGu4ynNPmcZnP2paY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HY8e8aNzLSZweommQltSrcfmRjO1j0zyVVa8lwc7SLqPU6LA0mPHt4hsc475ehvWc erUUJkJf7F1+RPKJ/d5QQ1Oumkztclcx1Qw9EESKmjZhYk7y3dm+JMJSjQtuOpD6WL hvlI0CIAMUU8zUTiUAl8an6IV86vtfUbZPV9lSGc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Gustavo L. F. Walbon" , "Mauro S. M. Rodrigues" , Michael Ellerman , Sasha Levin Subject: [PATCH 4.4 112/137] powerpc/security: Fix wrong message when RFI Flush is disable Date: Thu, 2 Jan 2020 23:08:05 +0100 Message-Id: <20200102220602.235210317@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200102220546.618583146@linuxfoundation.org> References: <20200102220546.618583146@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: Gustavo L. F. Walbon [ Upstream commit 4e706af3cd8e1d0503c25332b30cad33c97ed442 ] The issue was showing "Mitigation" message via sysfs whatever the state of "RFI Flush", but it should show "Vulnerable" when it is disabled. If you have "L1D private" feature enabled and not "RFI Flush" you are vulnerable to meltdown attacks. "RFI Flush" is the key feature to mitigate the meltdown whatever the "L1D private" state. SEC_FTR_L1D_THREAD_PRIV is a feature for Power9 only. So the message should be as the truth table shows: CPU | L1D private | RFI Flush | sysfs ----|-------------|-----------|------------------------------------- P9 | False | False | Vulnerable P9 | False | True | Mitigation: RFI Flush P9 | True | False | Vulnerable: L1D private per thread P9 | True | True | Mitigation: RFI Flush, L1D private per thread P8 | False | False | Vulnerable P8 | False | True | Mitigation: RFI Flush Output before this fix: # cat /sys/devices/system/cpu/vulnerabilities/meltdown Mitigation: RFI Flush, L1D private per thread # echo 0 > /sys/kernel/debug/powerpc/rfi_flush # cat /sys/devices/system/cpu/vulnerabilities/meltdown Mitigation: L1D private per thread Output after fix: # cat /sys/devices/system/cpu/vulnerabilities/meltdown Mitigation: RFI Flush, L1D private per thread # echo 0 > /sys/kernel/debug/powerpc/rfi_flush # cat /sys/devices/system/cpu/vulnerabilities/meltdown Vulnerable: L1D private per thread Signed-off-by: Gustavo L. F. Walbon Signed-off-by: Mauro S. M. Rodrigues Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20190502210907.42375-1-gwalbon@linux.ibm.com Signed-off-by: Sasha Levin --- arch/powerpc/kernel/security.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/kernel/security.c b/arch/powerpc/kernel/security.c index fc5c49046aa7..45778c83038f 100644 --- a/arch/powerpc/kernel/security.c +++ b/arch/powerpc/kernel/security.c @@ -135,26 +135,22 @@ ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, cha thread_priv = security_ftr_enabled(SEC_FTR_L1D_THREAD_PRIV); - if (rfi_flush || thread_priv) { + if (rfi_flush) { struct seq_buf s; seq_buf_init(&s, buf, PAGE_SIZE - 1); - seq_buf_printf(&s, "Mitigation: "); - - if (rfi_flush) - seq_buf_printf(&s, "RFI Flush"); - - if (rfi_flush && thread_priv) - seq_buf_printf(&s, ", "); - + seq_buf_printf(&s, "Mitigation: RFI Flush"); if (thread_priv) - seq_buf_printf(&s, "L1D private per thread"); + seq_buf_printf(&s, ", L1D private per thread"); seq_buf_printf(&s, "\n"); return s.len; } + if (thread_priv) + return sprintf(buf, "Vulnerable: L1D private per thread\n"); + if (!security_ftr_enabled(SEC_FTR_L1D_FLUSH_HV) && !security_ftr_enabled(SEC_FTR_L1D_FLUSH_PR)) return sprintf(buf, "Not affected\n"); -- 2.20.1