]> git.ipfire.org Git - thirdparty/kernel/stable.git/blobdiff - arch/powerpc/kernel/security.c
powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2
[thirdparty/kernel/stable.git] / arch / powerpc / kernel / security.c
index a8b27736293157e51f6767a62af83b857f654e67..4cb8f1f7b5935178894596cb2870b785a5972c18 100644 (file)
@@ -117,25 +117,35 @@ ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, cha
 
 ssize_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;