Received: by 2002:a17:90a:9103:0:0:0:0 with SMTP id k3csp11803283pjo; Thu, 2 Jan 2020 14:33:11 -0800 (PST) X-Google-Smtp-Source: APXvYqxHkudweNDDZueaB+YUT1ij6BcMfUJkExFX7yXRndHqc5bIneUxRIsl9GN0lZm/N+MQLhqH X-Received: by 2002:a9d:6c01:: with SMTP id f1mr89847213otq.133.1578004391074; Thu, 02 Jan 2020 14:33:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578004391; cv=none; d=google.com; s=arc-20160816; b=Q8O4H2wocSOv08JiA2TqWlxVM36UtS8pITUTi8W9tv1vQ6zT78Kvy+k9eAlWEF538x 6b3zOro7vichi1d35YMRhTMB/N4B635HRDlzVZWq79UIBUY/Bt6GJ/aO4H/BlYujotGw hZuR6BiUWqq0rNMM9/h5QzFpYDIkKbRFVFVZDeCp55kZr8ElN3lH957HtBvZqFCBl4GQ 5Ly3dGUZBMxGczeuwiCinSprK4FTwKwMmk0bOUmhzGKyrDlpQKRu/jFfwF640ujmHc3F mzzRqNORb9033VhKL6mBV2d3BrzOSc8F2Ve76sYTDbVvYN9nx3iFs5AD3SX2w78VJFQC O3JQ== 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=NL5tt5JJQ+tsZ8OCi4qtqIFLj8WXknMgGTpkKhZt9E8=; b=WVLn7O2GrvQu7tY0rDNH6KXNDbz1bo5blv7Jx1YHdJmTwguVaUOqdH9qPU4YgHDAyr YrJwcOYSFIMvgg5koeCQF9t+oGAPjtdnUUOrKWSYhs8bJxaxmMpZGF2jmtqQktctSK8y QMO+Jfh/jGt7QqGwp0v+VGROcBQXg/xgZs0uVs9HCHnIWSvU+ti7qHwhPZfQyaNGXqST iOC/cXg+fCyPm7zC7N/MISCI1/UiN1GUWm4B+amYHAyA5bxmz7HFniVRx+q11peT5K9X 0IIRUsv5IhU4QZVvNUYOM0zCWggmnYypFjO4S2w+X2WNj8pSQO4/OpWJMr8Tj7pprMdD fClg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=QAiZq0Ui; 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 o16si30378789otp.289.2020.01.02.14.32.59; Thu, 02 Jan 2020 14:33:11 -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=QAiZq0Ui; 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 S1730001AbgABWcT (ORCPT + 99 others); Thu, 2 Jan 2020 17:32:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:38194 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730374AbgABWcO (ORCPT ); Thu, 2 Jan 2020 17:32:14 -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 5EC1420866; Thu, 2 Jan 2020 22:32:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578004332; bh=bIdKIt42Oft48sEOt2Y+d81ttOhZ5CwtNwrc/wr2oe4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QAiZq0UiqDI8Nd6teUIBnhhQ5ZaVZdev/xNS1mQv0bazY2YDumYY3kJmq/CtBA8wm BBum9BNiaJSjpxM4PrsTisPvyU84XFg7BVfAbAwRfe1O8PPc3D6Bnu8LUjBorlWA98 V6D4tYuFVOWny8bWL8LkyDCVbsr1w7XthRAAiGEE= 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.9 135/171] powerpc/security: Fix wrong message when RFI Flush is disable Date: Thu, 2 Jan 2020 23:07:46 +0100 Message-Id: <20200102220605.807476277@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200102220546.960200039@linuxfoundation.org> References: <20200102220546.960200039@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 db66f25c190c..ff85fc800183 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