Skip to content

Commit

Permalink
x86/nmi/64: Make the "NMI executing" variable more consistent
Browse files Browse the repository at this point in the history
Currently, "NMI executing" is one the first time an outermost
NMI hits repeat_nmi and zero thereafter.  Change it to be zero
each time for consistency.

This is intended to help NMI handling fail harder if it's buggy.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
Andy Lutomirski authored and Ingo Molnar committed Jul 17, 2015
1 parent 23a781e commit 36f1a77
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions arch/x86/entry/entry_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -1441,8 +1441,8 @@ first_nmi:
/* Restore rdx. */
movq (%rsp), %rdx

/* Set "NMI executing" on the stack. */
pushq $1
/* Make room for "NMI executing". */
pushq $0

/* Leave room for the "iret" frame */
subq $(5*8), %rsp
Expand All @@ -1467,11 +1467,10 @@ repeat_nmi:
* RSP is pointing to "outermost RIP". gsbase is unknown, but, if
* we're repeating an NMI, gsbase has the same value that it had on
* the first iteration. paranoid_entry will load the kernel
* gsbase if needed before we call do_nmi.
*
* Set "NMI executing" in case we came back here via IRET.
* gsbase if needed before we call do_nmi. "NMI executing"
* is zero.
*/
movq $1, 10*8(%rsp)
movq $1, 10*8(%rsp) /* Set "NMI executing". */

/*
* Copy the "outermost" frame to the "iret" frame. NMIs that nest
Expand Down

0 comments on commit 36f1a77

Please sign in to comment.