Linux Patch #2
Subsystems (2)
PATCH v6 2/10 Linux Patch #2
Those SysFS functions have a similar preamble, as such lets make a common code to handle them.
xReviewed-by Borislav Petkov <[email protected]>
xSuggested-by Borislav Petkov <[email protected]>
Signed-off-by Konrad Rzeszutek Wilk <[email protected]>
---
v2: New patch
v3: Added Reviewed-by
v4: Fixed the title
--- arch/x86/kernel/cpu/bugs.c | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-)
arch/x86/kernel/cpu/bugs.c +32 -14
@@ -314,30 +314,48 @@ 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) + +ssize_t cpu_show_common (struct device *dev,struct device_attribute *attr, +char *buf,unsigned int bug) { -if (!boot_cpu_has_bug (X86_BUG_CPU_MELTDOWN )) +if (!boot_cpu_has_bug (bug))return sprintf (buf,"Not affected\n" ); -if (boot_cpu_has (X86_FEATURE_PTI )) -return sprintf (buf,"Mitigation: PTI\n" ); + +switch (bug) { +case X86_BUG_CPU_MELTDOWN : +if (boot_cpu_has (X86_FEATURE_PTI )) +return sprintf (buf,"Mitigation: PTI\n" ); + +break ; + +case X86_BUG_SPECTRE_V1 : +return sprintf (buf,"Mitigation: __user pointer sanitization\n" ); + +case X86_BUG_SPECTRE_V2 : +return sprintf (buf,"%s%s%s%s\n" , spectre_v2_strings[spectre_v2_enabled], +boot_cpu_has (X86_FEATURE_USE_IBPB ) ?", IBPB" :"" , +boot_cpu_has (X86_FEATURE_USE_IBRS_FW ) ?", IBRS_FW" :"" , +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) { -if (!boot_cpu_has_bug (X86_BUG_SPECTRE_V1 )) -return sprintf (buf,"Not affected\n" ); -return sprintf (buf,"Mitigation: __user pointer sanitization\n" ); +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%s\n" , spectre_v2_strings[spectre_v2_enabled], -boot_cpu_has (X86_FEATURE_USE_IBPB ) ?", IBPB" :"" , -boot_cpu_has (X86_FEATURE_USE_IBRS_FW ) ?", IBRS_FW" :"" , -spectre_v2_module_string ()); +return cpu_show_common (dev, attr, buf,X86_BUG_SPECTRE_V2 ); }#endif
Signature · 1 line
2.14.3