Re: [tip:x86/urgent] x86/mce: Fix CMCI preemption bugs

From: Borislav Petkov
Date: Thu Apr 17 2014 - 06:25:41 EST


On Thu, Apr 17, 2014 at 12:09:44PM +0200, Peter Zijlstra wrote:
> On Thu, Apr 17, 2014 at 02:57:54AM -0700, tip-bot for Ingo Molnar wrote:
> > Commit-ID: ea431643d6c38728195e2c456801c3ef66bb9991
> > Gitweb: http://git.kernel.org/tip/ea431643d6c38728195e2c456801c3ef66bb9991
> > Author: Ingo Molnar <mingo@xxxxxxxxxx>
> > AuthorDate: Thu, 17 Apr 2014 10:25:53 +0200
> > Committer: Ingo Molnar <mingo@xxxxxxxxxx>
> > CommitDate: Thu, 17 Apr 2014 10:28:42 +0200
> >
> > x86/mce: Fix CMCI preemption bugs
> >
> > The following commit:
> >
> > 27f6c573e0f7 ("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.
>
> it is arch_spinlock that doesn't disable preemption. raw_spinlock
> disables preemption just fine.

Hohum, __raw_spin_lock_irqsave does preempt_disable(). And
machine_check_poll should be running in irq context so why would the
original issue happen?

> kernel: [ 7.341085] BUG: using __this_cpu_write() in preemptible [00000000] code: modprobe/546

Unfortunately, I have only one line in a mail CCed to me.

Color me confused.

--
Regards/Gruss,
Boris.

Sent from a fat crate under my desk. Formatting is fine.
--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/