[PATCH] i386 NMI on debug stack check correction

From: Jan Beulich
Date: Thu May 12 2005 - 03:14:57 EST


(Note: Patch also attached because the inline version is certain to get
line wrapped.)

Stack pointer comparisons for the NMI on debug stack check/fixup were
incorrect.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

--- linux-2.6.12-rc4.base/arch/i386/kernel/entry.S 2005-05-11 17:27:52.217255616 +0200
+++ linux-2.6.12-rc4/arch/i386/kernel/entry.S 2005-05-11 17:50:36.239892656 +0200
@@ -557,11 +557,10 @@ nmi_stack_fixup:
nmi_debug_stack_check:
cmpw $__KERNEL_CS,16(%esp)
jne nmi_stack_correct
- cmpl $debug - 1,(%esp)
- jle nmi_stack_correct
+ cmpl $debug,(%esp)
+ jb nmi_stack_correct
cmpl $debug_esp_fix_insn,(%esp)
- jle nmi_debug_stack_fixup
-nmi_debug_stack_fixup:
+ ja nmi_stack_correct
FIX_STACK(24,nmi_stack_correct, 1)
jmp nmi_stack_correct



(Note: Patch also attached because the inline version is certain to get
line wrapped.)

Stack pointer comparisons for the NMI on debug stack check/fixup were
incorrect.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

--- linux-2.6.12-rc4.base/arch/i386/kernel/entry.S 2005-05-11 17:27:52.217255616 +0200
+++ linux-2.6.12-rc4/arch/i386/kernel/entry.S 2005-05-11 17:50:36.239892656 +0200
@@ -557,11 +557,10 @@ nmi_stack_fixup:
nmi_debug_stack_check:
cmpw $__KERNEL_CS,16(%esp)
jne nmi_stack_correct
- cmpl $debug - 1,(%esp)
- jle nmi_stack_correct
+ cmpl $debug,(%esp)
+ jb nmi_stack_correct
cmpl $debug_esp_fix_insn,(%esp)
- jle nmi_debug_stack_fixup
-nmi_debug_stack_fixup:
+ ja nmi_stack_correct
FIX_STACK(24,nmi_stack_correct, 1)
jmp nmi_stack_correct