Commit 07599697 authored by Konrad Rzeszutek Wilk's avatar Konrad Rzeszutek Wilk Committed by Juerg Haefliger

UBUNTU: SAUCE: x86/bugs: Concentrate bug reporting into a separate function

CVE-2018-3639 (x86)

Those SysFS functions have a similar preamble, as such make common
code to handle them.
Suggested-by: default avatarBorislav Petkov <bp@suse.de>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarBorislav Petkov <bp@suse.de>
Reviewed-by: default avatarIngo Molnar <mingo@kernel.org>

[juergh:
 - Context adjustments.
 - X86_FEATURE_PTI -> X86_FEATURE_KAISER.
 - Drop eval of X86_FEATURE_USE_IBRS_FW for Spectre v2 (not implemented in
   Xenial).
 - Report state of OSB for Spectre v1.]
Signed-off-by: default avatarJuerg Haefliger <juergh@canonical.com>
parent a3e16b93
......@@ -340,15 +340,6 @@ static void __init spectre_v2_select_mitigation(void)
#undef pr_fmt
#ifdef CONFIG_SYSFS
ssize_t cpu_show_meltdown(struct device *dev,
struct device_attribute *attr, char *buf)
{
if (!boot_cpu_has_bug(X86_BUG_CPU_MELTDOWN))
return sprintf(buf, "Not affected\n");
if (boot_cpu_has(X86_FEATURE_KAISER))
return sprintf(buf, "Mitigation: PTI\n");
return sprintf(buf, "Vulnerable\n");
}
#ifndef osb
#define osb_is_enabled (0)
......@@ -356,24 +347,50 @@ ssize_t cpu_show_meltdown(struct device *dev,
#ifndef osb_is_enabled
#define osb_is_enabled (1)
#endif
ssize_t cpu_show_spectre_v1(struct device *dev,
struct device_attribute *attr, char *buf)
ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr,
char *buf, unsigned int bug)
{
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V1))
if (!boot_cpu_has_bug(bug))
return sprintf(buf, "Not affected\n");
if (osb_is_enabled)
return sprintf(buf, "Mitigation: OSB (observable speculation barrier, Intel v6)\n");
switch (bug) {
case X86_BUG_CPU_MELTDOWN:
if (boot_cpu_has(X86_FEATURE_KAISER))
return sprintf(buf, "Mitigation: PTI\n");
break;
case X86_BUG_SPECTRE_V1:
if (osb_is_enabled)
return sprintf(buf, "Mitigation: OSB (observable speculation barrier, Intel v6)\n");
break;
case X86_BUG_SPECTRE_V2:
return sprintf(buf, "%s%s%s\n", spectre_v2_strings[spectre_v2_enabled],
ibpb_inuse ? ", IBPB (Intel v4)" : "",
spectre_v2_module_string());
default:
break;
}
return sprintf(buf, "Vulnerable\n");
}
ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, char *buf)
{
return cpu_show_common(dev, attr, buf, X86_BUG_CPU_MELTDOWN);
}
ssize_t cpu_show_spectre_v1(struct device *dev, struct device_attribute *attr, char *buf)
{
return cpu_show_common(dev, attr, buf, X86_BUG_SPECTRE_V1);
}
ssize_t cpu_show_spectre_v2(struct device *dev,
struct device_attribute *attr, char *buf)
{
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2))
return sprintf(buf, "Not affected\n");
return sprintf(buf, "%s%s%s\n", spectre_v2_strings[spectre_v2_enabled],
ibpb_inuse ? ", IBPB (Intel v4)" : "",
spectre_v2_module_string());
return cpu_show_common(dev, attr, buf, X86_BUG_SPECTRE_V2);
}
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment