diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch deleted file mode 100644 index d00a4886..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 754013b3067881c493df74f91ad34099c3a32c61 Mon Sep 17 00:00:00 2001 -From: Borislav Petkov <bp@suse.de> -Date: Fri, 22 Jun 2018 11:54:28 +0200 -Subject: [PATCH 10/10] x86/mce: Do not overwrite MCi_STATUS in - mce_no_way_out() - -commit 1f74c8a64798e2c488f86efc97e308b85fb7d7aa upstream. - -mce_no_way_out() does a quick check during #MC to see whether some of -the MCEs logged would require the kernel to panic immediately. And it -passes a struct mce where MCi_STATUS gets written. - -However, after having saved a valid status value, the next iteration -of the loop which goes over the MCA banks on the CPU, overwrites the -valid status value because we're using struct mce as storage instead of -a temporary variable. - -Which leads to MCE records with an empty status value: - - mce: [Hardware Error]: CPU 0: Machine Check Exception: 6 Bank 0: 0000000000000000 - mce: [Hardware Error]: RIP 10:<ffffffffbd42fbd7> {trigger_mce+0x7/0x10} - -In order to prevent the loss of the status register value, return -immediately when severity is a panic one so that we can panic -immediately with the first fatal MCE logged. This is also the intention -of this function and not to noodle over the banks while a fatal MCE is -already logged. - -Tony: read the rest of the MCA bank to populate the struct mce fully. - -Suggested-by: Tony Luck <tony.luck@intel.com> -Signed-off-by: Borislav Petkov <bp@suse.de> -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> -Cc: <stable@vger.kernel.org> -Link: https://lkml.kernel.org/r/20180622095428.626-8-bp@alien8.de -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/kernel/cpu/mcheck/mce.c | 18 ++++++++++-------- - 1 file changed, 10 insertions(+), 8 deletions(-) - -diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c -index 4711e1c..bf6013d 100644 ---- a/arch/x86/kernel/cpu/mcheck/mce.c -+++ b/arch/x86/kernel/cpu/mcheck/mce.c -@@ -779,23 +779,25 @@ EXPORT_SYMBOL_GPL(machine_check_poll); - static int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp, - struct pt_regs *regs) - { -- int i, ret = 0; - char *tmp; -+ int i; - - for (i = 0; i < mca_cfg.banks; i++) { - m->status = mce_rdmsrl(msr_ops.status(i)); -- if (m->status & MCI_STATUS_VAL) { -- __set_bit(i, validp); -- if (quirk_no_way_out) -- quirk_no_way_out(i, m, regs); -- } -+ if (!(m->status & MCI_STATUS_VAL)) -+ continue; -+ -+ __set_bit(i, validp); -+ if (quirk_no_way_out) -+ quirk_no_way_out(i, m, regs); - - if (mce_severity(m, mca_cfg.tolerant, &tmp, true) >= MCE_PANIC_SEVERITY) { -+ mce_read_aux(m, i); - *msg = tmp; -- ret = 1; -+ return 1; - } - } -- return ret; -+ return 0; - } - - /* --- -2.7.4 - |