summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStas Sergeev <stsp@aknet.ru>2005-05-01 08:58:49 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-01 08:58:49 -0700
commit48c88211a65bc30f030fe228bda30fda870deb90 (patch)
tree16990884e35cfd2fad7343494eef37b70b4614ba
parenta2f7c354159b87dfbd9900f597d48d18755a9d16 (diff)
downloadlinux-48c88211a65bc30f030fe228bda30fda870deb90.tar.gz
linux-48c88211a65bc30f030fe228bda30fda870deb90.tar.bz2
linux-48c88211a65bc30f030fe228bda30fda870deb90.zip
[PATCH] x86: entry.S trap return fixes
do_debug() and do_int3() return void. This patch fixes the CONFIG_KPROBES variant of do_int3() to return void too and adjusts entry.S accordingly. Signed-off-by: Stas Sergeev <stsp@aknet.ru> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/i386/kernel/entry.S4
-rw-r--r--arch/i386/kernel/traps.c5
2 files changed, 2 insertions, 7 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index fe1918cc68d1..25bf7589e0c4 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -514,8 +514,6 @@ debug_stack_correct:
xorl %edx,%edx # error code 0
movl %esp,%eax # pt_regs pointer
call do_debug
- testl %eax,%eax
- jnz restore_all
jmp ret_from_exception
/*
@@ -596,8 +594,6 @@ ENTRY(int3)
xorl %edx,%edx # zero error code
movl %esp,%eax # pt_regs pointer
call do_int3
- testl %eax,%eax
- jnz restore_all
jmp ret_from_exception
ENTRY(overflow)
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index d70819481f6e..00c63419c06f 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -643,16 +643,15 @@ void unset_nmi_callback(void)
}
#ifdef CONFIG_KPROBES
-fastcall int do_int3(struct pt_regs *regs, long error_code)
+fastcall void do_int3(struct pt_regs *regs, long error_code)
{
if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP)
== NOTIFY_STOP)
- return 1;
+ return;
/* This is an interrupt gate, because kprobes wants interrupts
disabled. Normal trap handlers don't. */
restore_interrupts(regs);
do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
- return 0;
}
#endif