• Ingo Molnar's avatar
    x86/mce: Fix CMCI preemption bugs · ea431643
    Ingo Molnar authored
    The following commit:
    
      27f6c573
    
     ("x86, CMCI: Add proper detection of end of CMCI storms")
    
    Added two preemption bugs:
    
     - machine_check_poll() does a get_cpu_var() without a matching
       put_cpu_var(), which causes preemption imbalance and crashes upon
       bootup.
    
     - it does percpu ops without disabling preemption. Preemption is not
       disabled due to the mistaken use of a raw spinlock.
    
    To fix these bugs fix the imbalance and change
    cmci_discover_lock to a regular spinlock.
    Reported-by: default avatarOwen Kibel <qmewlo@gmail.com>
    Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: Chen, Gong <gong.chen@linux.intel.com>
    Cc: Josh Boyer <jwboyer@fedoraproject.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Alexander Todorov <atodorov@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Link: http://lkml.kernel.org/n/tip-jtjptvgigpfkpvtQxpEk1at2@git.kernel.org
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    --
     arch/x86/kernel/cpu/mcheck/mce.c       |    4 +---
     arch/x86/kernel/cpu/mcheck/mce_intel.c |   18 +++++++++---------
     2 files changed, 10 insertions(+), 12 deletions(-)
    ea431643
mce_intel.c 9.79 KB