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 /arch | |
| 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>
Diffstat (limited to 'arch')
| -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 | ||
