diff options
author | Stas Sergeev <stsp@aknet.ru> | 2005-05-01 11:58:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-01 11:58:49 -0400 |
commit | 48c88211a65bc30f030fe228bda30fda870deb90 (patch) | |
tree | 16990884e35cfd2fad7343494eef37b70b4614ba | |
parent | a2f7c354159b87dfbd9900f597d48d18755a9d16 (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.S | 4 | ||||
-rw-r--r-- | arch/i386/kernel/traps.c | 5 |
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 | ||
603 | ENTRY(overflow) | 599 | 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) | |||
643 | } | 643 | } |
644 | 644 | ||
645 | #ifdef CONFIG_KPROBES | 645 | #ifdef CONFIG_KPROBES |
646 | fastcall int do_int3(struct pt_regs *regs, long error_code) | 646 | fastcall 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 | ||