Linux Patch 1
Subsystems (4)
PATCH 1/7 Linux Patch 1
It does not do much except show the words 'Vulnerable'.
It assumes that Cyrix, Old Intel CPUs are immune to this.
Signed-off-by Konrad Rzeszutek Wilk <[email protected]>
---
v3: Remove AMD
s/md/mdd/ --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kernel/cpu/bugs.c | 8 ++++++++ arch/x86/kernel/cpu/common.c | 17 +++++++++++++++++ drivers/base/cpu.c | 8 ++++++++ include/linux/cpu.h | 2 ++ 5 files changed, 36 insertions(+)
arch/x86/include/asm/cpufeatures.h +1 -0
@@ -362,5 +362,6 @@#define X86_BUG_CPU_MELTDOWN X86_BUG(14)/* CPU is affected by meltdown attack and needs kernel page table isolation */ #define X86_BUG_SPECTRE_V1 X86_BUG(15)/* CPU is affected by Spectre variant 1 attack with conditional branches */ #define X86_BUG_SPECTRE_V2 X86_BUG(16)/* CPU is affected by Spectre variant 2 attack with indirect branches */ +#define X86_BUG_CPU_MD X86_BUG(17)/* CPU is affected by memory disambiguation. */ #endif /* _ASM_X86_CPUFEATURES_H */
arch/x86/kernel/cpu/bugs.c +8 -0
@@ -340,4 +340,12 @@ ssize_t cpu_show_spectre_v2(struct device *dev, struct device_attribute *attr, cboot_cpu_has (X86_FEATURE_USE_IBRS_FW ) ?", IBRS_FW" :"" , spectre_v2_module_string()); } + +ssize_t cpu_show_md (struct device *dev,struct device_attribute *attr,char *buf) +{ +if (!boot_cpu_has_bug (X86_BUG_CPU_MD )) +return sprintf (buf,"Not affected\n" ); + +return sprintf (buf,"Vulnerable\n" ); +}#endif
arch/x86/kernel/cpu/common.c +17 -0
@@ -935,6 +935,21 @@ static bool __init cpu_vulnerable_to_meltdown(struct cpuinfo_x86 *c)return true; } +static const __initconst struct x86_cpu_id cpu_no_md[] = { + {X86_VENDOR_CENTAUR ,5 }, + {X86_VENDOR_INTEL ,5 }, + {X86_VENDOR_NSC ,5 }, + {X86_VENDOR_ANY ,4 }, + {} +}; + +static bool __init cpu_vulnerable_to_md (struct cpuinfo_x86 *c) +{ +if (x86_match_cpu (cpu_no_md)) +return false; + +return true; +}/* * Do minimum CPU detection early. * Fields really needed: vendor, cpuid_level, family, model, mask,
@@ -988,6 +1003,8 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)setup_force_cpu_bug (X86_BUG_SPECTRE_V1 );setup_force_cpu_bug (X86_BUG_SPECTRE_V2 ); } +if (cpu_vulnerable_to_md (c)) +setup_force_cpu_bug (X86_BUG_CPU_MD );fpu__init_system (c);
drivers/base/cpu.c +8 -0
@@ -532,14 +532,22 @@ ssize_t __weak cpu_show_spectre_v2(struct device *dev,return sprintf (buf,"Not affected\n" ); } +ssize_t __weak cpu_show_md (struct device *dev, +struct device_attribute *attr,char *buf) +{ +return sprintf (buf,"Not affected\n" ); +} + static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); static DEVICE_ATTR(spectre_v2, 0444, cpu_show_spectre_v2, NULL); +static DEVICE_ATTR(md, 0444, cpu_show_md, NULL);static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_meltdown.attr, &dev_attr_spectre_v1.attr, &dev_attr_spectre_v2.attr, + &dev_attr_md.attr,NULL };
include/linux/cpu.h +2 -0
@@ -53,6 +53,8 @@ extern ssize_t cpu_show_spectre_v1(struct device *dev, struct device_attribute *attr, char *buf);extern ssize_t cpu_show_spectre_v2 (struct device *dev,struct device_attribute *attr,char *buf); +extern ssize_t cpu_show_md (struct device *dev, +struct device_attribute *attr,char *buf); extern __printf(4, 5) struct device *cpu_device_create(struct device *parent, void *drvdata,
Signature · 1 line
2.14.3