FAILED: patch "[PATCH] powerpc64s: Show ori31 availability in spectre_v1 sysfs file" failed to apply to 4.14-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
6d44acae1937b81cf8115ada8958e04f601f3f2eMon Sep 17 00:00:00 2001
From: Michael Ellerman <[email protected]>
Date: Mon, 9 Jul 2018 16:25:21 +1000
Subject: [PATCH] powerpc64s: Show ori31 availability in spectre_v1 sysfs file
not v2
When I added the spectre_v2 information in sysfs, I included the availability of the ori31 speculation barrier.
Although the ori31 barrier can be used to mitigate v2, it's primarily intended as a spectre v1 mitigation. Spectre v2 is mitigated by hardware changes.
So rework the sysfs files to show the ori31 information in the spectre_v1 file, rather than v2.
Currently we display eg:
$ grep . spectre_v* spectre_v1:Mitigation: __user pointer sanitization spectre_v2:Mitigation: Indirect branch cache disabled, ori31 speculation barrier enabled
After:
$ grep . spectre_v* spectre_v1:Mitigation: __user pointer sanitization, ori31 speculation barrier enabled spectre_v2:Mitigation: Indirect branch cache disabled
arch/powerpc/kernel/security.c +17 -10
@@ -117,25 +117,35 @@ ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, chassize_t cpu_show_spectre_v1 (struct device *dev,struct device_attribute *attr,char *buf) { -if (!security_ftr_enabled (SEC_FTR_BNDS_CHK_SPEC_BAR )) -return sprintf (buf,"Not affected\n" ); +struct seq_buf s; + +seq_buf_init (&s, buf,PAGE_SIZE -1 ); -if (barrier_nospec_enabled) -return sprintf (buf,"Mitigation: __user pointer sanitization\n" ); +if (security_ftr_enabled (SEC_FTR_BNDS_CHK_SPEC_BAR )) { +if (barrier_nospec_enabled) +seq_buf_printf (&s,"Mitigation: __user pointer sanitization" ); +else +seq_buf_printf (&s,"Vulnerable" ); -return sprintf (buf,"Vulnerable\n" ); +if (security_ftr_enabled (SEC_FTR_SPEC_BAR_ORI31 )) +seq_buf_printf (&s,", ori31 speculation barrier enabled" ); + +seq_buf_printf (&s,"\n" ); + }else +seq_buf_printf (&s,"Not affected\n" ); + +return s.len; }ssize_t cpu_show_spectre_v2 (struct device *dev,struct device_attribute *attr,char *buf) { -bool bcs, ccd, ori;struct seq_buf s; +bool bcs, ccd;seq_buf_init (&s, buf,PAGE_SIZE -1 ); bcs =security_ftr_enabled (SEC_FTR_BCCTRL_SERIALISED ); ccd =security_ftr_enabled (SEC_FTR_COUNT_CACHE_DISABLED ); - ori =security_ftr_enabled (SEC_FTR_SPEC_BAR_ORI31 );if (bcs || ccd) {seq_buf_printf (&s,"Mitigation: " );
@@ -151,9 +161,6 @@ ssize_t cpu_show_spectre_v2(struct device *dev, struct device_attribute *attr, c }else seq_buf_printf (&s,"Vulnerable" ); -if (ori) -seq_buf_printf (&s,", ori31 speculation barrier enabled" ); -seq_buf_printf (&s,"\n" );return s.len;