lkml.org 
[lkml]   [2012]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/5] x86: mce: Disable preemption when calling raise_local()
    Date
    From: Thomas Gleixner <tglx@linutronix.de>

    raise_mce() has a code path which does not disable preemption when the
    raise_local() is called. The per cpu variable access in raise_local()
    depends on preemption being disabled to be functional. So that code
    path was either never tested or never tested with CONFIG_DEBUG_PREEMPT
    enabled.

    Add the missing preempt_disable/enable() pair around the call.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    arch/x86/kernel/cpu/mcheck/mce-inject.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c
    index fc4beb3..753746f 100644
    --- a/arch/x86/kernel/cpu/mcheck/mce-inject.c
    +++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c
    @@ -194,7 +194,11 @@ static void raise_mce(struct mce *m)
    put_online_cpus();
    } else
    #endif
    + {
    + preempt_disable();
    raise_local();
    + preempt_enable();
    + }
    }

    /* Error injection interface */
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2012-07-19 08:41    [W:0.021 / U:61.460 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site