aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStas Sergeev <stsp@aknet.ru>2005-05-01 11:58:49 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-01 11:58:49 -0400
commit48c88211a65bc30f030fe228bda30fda870deb90 (patch)
tree16990884e35cfd2fad7343494eef37b70b4614ba
parenta2f7c354159b87dfbd9900f597d48d18755a9d16 (diff)
[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:
514 xorl %edx,%edx # error code 0 514 xorl %edx,%edx # error code 0
515 movl %esp,%eax # pt_regs pointer 515 movl %esp,%eax # pt_regs pointer
516 call do_debug 516 call do_debug
517 testl %eax,%eax
518 jnz restore_all
519 jmp ret_from_exception 517 jmp ret_from_exception
520 518
521/* 519/*
@@ -596,8 +594,6 @@ ENTRY(int3)
596 xorl %edx,%edx # zero error code 594 xorl %edx,%edx # zero error code
597 movl %esp,%eax # pt_regs pointer 595 movl %esp,%eax # pt_regs pointer
598 call do_int3 596 call do_int3
599 testl %eax,%eax
600 jnz restore_all
601 jmp ret_from_exception 597 jmp ret_from_exception
602 598
603ENTRY(overflow) 599ENTRY(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)
643} 643}
644 644
645#ifdef CONFIG_KPROBES 645#ifdef CONFIG_KPROBES
646fastcall int do_int3(struct pt_regs *regs, long error_code) 646fastcall void do_int3(struct pt_regs *regs, long error_code)
647{ 647{
648 if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) 648 if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP)
649 == NOTIFY_STOP) 649 == NOTIFY_STOP)
650 return 1; 650 return;
651 /* This is an interrupt gate, because kprobes wants interrupts 651 /* This is an interrupt gate, because kprobes wants interrupts
652 disabled. Normal trap handlers don't. */ 652 disabled. Normal trap handlers don't. */
653 restore_interrupts(regs); 653 restore_interrupts(regs);
654 do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL); 654 do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
655 return 0;
656} 655}
657#endif 656#endif
658 657