All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gustavo Walbon <gwalbon@linux.ibm.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au,
	diana.craciun@nxp.com, gwalbon@linux.ibm.com, jkosina@suse.cz,
	jpoimboe@redhat.com, geert+renesas@glider.be, cmr@informatik.wtf,
	yuehaibing@huawei.com, linux-kernel@vger.kernel.org,
	maurosr@linux.ibm.com
Subject: [PATCH][v2] powerpc: Set right value of Speculation_Store_Bypass in /proc/<pid>/status
Date: Sat, 23 Nov 2019 20:02:35 -0300	[thread overview]
Message-ID: <20191123230235.11888-1-gwalbon@linux.ibm.com> (raw)

The issue has showed the value of status of Speculation_Store_Bypass in the
/proc/<pid>/status as `unknown` for PowerPC systems.

The patch fix the checking of the mitigation status of Speculation, and
can be reported as "not vulnerable", "globally mitigated" or "vulnerable".

Link: https://github.com/linuxppc/issues/issues/255

Changelog:
Rebase on v5.4-rc8

Signed-off-by: Gustavo Walbon <gwalbon@linux.ibm.com>
---
 arch/powerpc/kernel/security.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/security.c b/arch/powerpc/kernel/security.c
index 7d4b2080a658..04e566026bbc 100644
--- a/arch/powerpc/kernel/security.c
+++ b/arch/powerpc/kernel/security.c
@@ -14,7 +14,7 @@
 #include <asm/debugfs.h>
 #include <asm/security_features.h>
 #include <asm/setup.h>
-
+#include <linux/prctl.h>
 
 u64 powerpc_security_features __read_mostly = SEC_FTR_DEFAULT;
 
@@ -344,6 +344,29 @@ ssize_t cpu_show_spec_store_bypass(struct device *dev, struct device_attribute *
 	return sprintf(buf, "Vulnerable\n");
 }
 
+static int ssb_prctl_get(struct task_struct *task)
+{
+	if (stf_barrier) {
+		if (stf_enabled_flush_types == STF_BARRIER_NONE)
+			return PR_SPEC_NOT_AFFECTED;
+		else
+			return PR_SPEC_DISABLE;
+	} else
+		return PR_SPEC_DISABLE_NOEXEC;
+
+	return -EINVAL;
+}
+
+int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which)
+{
+	switch (which) {
+	case PR_SPEC_STORE_BYPASS:
+		return ssb_prctl_get(task);
+	default:
+		return -ENODEV;
+	}
+}
+
 #ifdef CONFIG_DEBUG_FS
 static int stf_barrier_set(void *data, u64 val)
 {
-- 
2.19.1


WARNING: multiple messages have this Message-ID (diff)
From: Gustavo Walbon <gwalbon@linux.ibm.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: cmr@informatik.wtf, geert+renesas@glider.be,
	gwalbon@linux.ibm.com, jpoimboe@redhat.com,
	yuehaibing@huawei.com, linux-kernel@vger.kernel.org,
	diana.craciun@nxp.com, paulus@samba.org, jkosina@suse.cz,
	maurosr@linux.ibm.com
Subject: [PATCH][v2] powerpc: Set right value of Speculation_Store_Bypass in /proc/<pid>/status
Date: Sat, 23 Nov 2019 20:02:35 -0300	[thread overview]
Message-ID: <20191123230235.11888-1-gwalbon@linux.ibm.com> (raw)

The issue has showed the value of status of Speculation_Store_Bypass in the
/proc/<pid>/status as `unknown` for PowerPC systems.

The patch fix the checking of the mitigation status of Speculation, and
can be reported as "not vulnerable", "globally mitigated" or "vulnerable".

Link: https://github.com/linuxppc/issues/issues/255

Changelog:
Rebase on v5.4-rc8

Signed-off-by: Gustavo Walbon <gwalbon@linux.ibm.com>
---
 arch/powerpc/kernel/security.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/security.c b/arch/powerpc/kernel/security.c
index 7d4b2080a658..04e566026bbc 100644
--- a/arch/powerpc/kernel/security.c
+++ b/arch/powerpc/kernel/security.c
@@ -14,7 +14,7 @@
 #include <asm/debugfs.h>
 #include <asm/security_features.h>
 #include <asm/setup.h>
-
+#include <linux/prctl.h>
 
 u64 powerpc_security_features __read_mostly = SEC_FTR_DEFAULT;
 
@@ -344,6 +344,29 @@ ssize_t cpu_show_spec_store_bypass(struct device *dev, struct device_attribute *
 	return sprintf(buf, "Vulnerable\n");
 }
 
+static int ssb_prctl_get(struct task_struct *task)
+{
+	if (stf_barrier) {
+		if (stf_enabled_flush_types == STF_BARRIER_NONE)
+			return PR_SPEC_NOT_AFFECTED;
+		else
+			return PR_SPEC_DISABLE;
+	} else
+		return PR_SPEC_DISABLE_NOEXEC;
+
+	return -EINVAL;
+}
+
+int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which)
+{
+	switch (which) {
+	case PR_SPEC_STORE_BYPASS:
+		return ssb_prctl_get(task);
+	default:
+		return -ENODEV;
+	}
+}
+
 #ifdef CONFIG_DEBUG_FS
 static int stf_barrier_set(void *data, u64 val)
 {
-- 
2.19.1


             reply	other threads:[~2019-11-23 23:08 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-23 23:02 Gustavo Walbon [this message]
2019-11-23 23:02 ` [PATCH][v2] powerpc: Set right value of Speculation_Store_Bypass in /proc/<pid>/status Gustavo Walbon
2019-11-26  2:28 ` Michael Ellerman
2019-11-26  2:28   ` Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191123230235.11888-1-gwalbon@linux.ibm.com \
    --to=gwalbon@linux.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=cmr@informatik.wtf \
    --cc=diana.craciun@nxp.com \
    --cc=geert+renesas@glider.be \
    --cc=jkosina@suse.cz \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maurosr@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=yuehaibing@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.