[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>
This commit is contained in:
committed by
Linus Torvalds
parent
a2f7c35415
commit
48c88211a6
@@ -514,8 +514,6 @@ debug_stack_correct:
|
|||||||
xorl %edx,%edx # error code 0
|
xorl %edx,%edx # error code 0
|
||||||
movl %esp,%eax # pt_regs pointer
|
movl %esp,%eax # pt_regs pointer
|
||||||
call do_debug
|
call do_debug
|
||||||
testl %eax,%eax
|
|
||||||
jnz restore_all
|
|
||||||
jmp ret_from_exception
|
jmp ret_from_exception
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -596,8 +594,6 @@ ENTRY(int3)
|
|||||||
xorl %edx,%edx # zero error code
|
xorl %edx,%edx # zero error code
|
||||||
movl %esp,%eax # pt_regs pointer
|
movl %esp,%eax # pt_regs pointer
|
||||||
call do_int3
|
call do_int3
|
||||||
testl %eax,%eax
|
|
||||||
jnz restore_all
|
|
||||||
jmp ret_from_exception
|
jmp ret_from_exception
|
||||||
|
|
||||||
ENTRY(overflow)
|
ENTRY(overflow)
|
||||||
|
@@ -643,16 +643,15 @@ void unset_nmi_callback(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_KPROBES
|
#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)
|
if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP)
|
||||||
== NOTIFY_STOP)
|
== NOTIFY_STOP)
|
||||||
return 1;
|
return;
|
||||||
/* This is an interrupt gate, because kprobes wants interrupts
|
/* This is an interrupt gate, because kprobes wants interrupts
|
||||||
disabled. Normal trap handlers don't. */
|
disabled. Normal trap handlers don't. */
|
||||||
restore_interrupts(regs);
|
restore_interrupts(regs);
|
||||||
do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
|
do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user