Re: [PATCH 2/3] ipmi/watchdog: Use nmi_panic() when kernel panics in NMI handler

From: Michal Hocko
Date: Tue Mar 01 2016 - 03:50:25 EST


On Tue 01-03-16 10:50:39, Hidehiro Kawai wrote:
> commit 58c5661f2144 ("panic, x86: Allow CPUs to save registers even
> if looping in NMI context") introduced nmi_panic() which prevents
> concurrent/recursive execution of panic(). It also saves registers
> for the crash dump on x86.
>
> ipmi_watchdog driver can call panic() from NMI handler, so replace
> it with nmi_panic().
>
> Signed-off-by: Hidehiro Kawai <hidehiro.kawai.ez@xxxxxxxxxxx>
> Cc: Corey Minyard <minyard@xxxxxxx>
> Cc: openipmi-developer@xxxxxxxxxxxxxxxxxxxxx

Reviewed-by: Michal Hocko <mhocko@xxxxxxxx>

> ---
> drivers/char/ipmi/ipmi_watchdog.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c
> index 096f0ce..4facc75 100644
> --- a/drivers/char/ipmi/ipmi_watchdog.c
> +++ b/drivers/char/ipmi/ipmi_watchdog.c
> @@ -1140,7 +1140,7 @@ ipmi_nmi(unsigned int val, struct pt_regs *regs)
> the timer. So do so. */
> pretimeout_since_last_heartbeat = 1;
> if (atomic_inc_and_test(&preop_panic_excl))
> - panic(PFX "pre-timeout");
> + nmi_panic(regs, PFX "pre-timeout");
> }
>
> return NMI_HANDLED;
>

--
Michal Hocko
SUSE Labs