aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/entry/entry_64.S5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 404ca97c4715..055a01de7c8d 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -1190,9 +1190,12 @@ ENTRY(nmi)
1190 * we don't want to enable interrupts, because then we'll end 1190 * we don't want to enable interrupts, because then we'll end
1191 * up in an awkward situation in which IRQs are on but NMIs 1191 * up in an awkward situation in which IRQs are on but NMIs
1192 * are off. 1192 * are off.
1193 *
1194 * We also must not push anything to the stack before switching
1195 * stacks lest we corrupt the "NMI executing" variable.
1193 */ 1196 */
1194 1197
1195 SWAPGS 1198 SWAPGS_UNSAFE_STACK
1196 cld 1199 cld
1197 movq %rsp, %rdx 1200 movq %rsp, %rdx
1198 movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp 1201 movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp