| From aff78928d7d3bb9d465bdd870306473b1f03e3f9 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 4 Sep 2018 11:22:12 +0200 |
| Subject: x86/mce-inject: Reset injection struct after injection |
| |
| From: Borislav Petkov <bp@suse.de> |
| |
| [ Upstream commit 7401a633c34adc7aefd3edfec60074cb0475a3e8 ] |
| |
| Clear the MCE struct which is used for collecting the injection details |
| after injection. |
| |
| Also, populate it with more details from the machine. |
| |
| Signed-off-by: Borislav Petkov <bp@suse.de> |
| Link: https://lkml.kernel.org/r/20180905081954.10391-1-bp@alien8.de |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/x86/kernel/cpu/mcheck/mce-inject.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c |
| index ff1c00b695aed..1ceccc4a5472c 100644 |
| --- a/arch/x86/kernel/cpu/mcheck/mce-inject.c |
| +++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c |
| @@ -106,6 +106,9 @@ static void setup_inj_struct(struct mce *m) |
| memset(m, 0, sizeof(struct mce)); |
| |
| m->cpuvendor = boot_cpu_data.x86_vendor; |
| + m->time = ktime_get_real_seconds(); |
| + m->cpuid = cpuid_eax(1); |
| + m->microcode = boot_cpu_data.microcode; |
| } |
| |
| /* Update fake mce registers on current CPU. */ |
| @@ -580,6 +583,9 @@ static int inj_bank_set(void *data, u64 val) |
| m->bank = val; |
| do_inject(); |
| |
| + /* Reset injection struct */ |
| + setup_inj_struct(&i_mce); |
| + |
| return 0; |
| } |
| |
| -- |
| 2.20.1 |
| |