|
@@ -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;
|