diff options
Diffstat (limited to 'arch/x86/kernel/traps.c')
-rw-r--r-- | arch/x86/kernel/traps.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index ff08457a025d..05b31d92f69c 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
@@ -303,8 +303,12 @@ gp_in_kernel: | |||
303 | dotraplinkage void __kprobes notrace do_int3(struct pt_regs *regs, long error_code) | 303 | dotraplinkage void __kprobes notrace do_int3(struct pt_regs *regs, long error_code) |
304 | { | 304 | { |
305 | #ifdef CONFIG_DYNAMIC_FTRACE | 305 | #ifdef CONFIG_DYNAMIC_FTRACE |
306 | /* ftrace must be first, everything else may cause a recursive crash */ | 306 | /* |
307 | if (unlikely(modifying_ftrace_code) && ftrace_int3_handler(regs)) | 307 | * ftrace must be first, everything else may cause a recursive crash. |
308 | * See note by declaration of modifying_ftrace_code in ftrace.c | ||
309 | */ | ||
310 | if (unlikely(atomic_read(&modifying_ftrace_code)) && | ||
311 | ftrace_int3_handler(regs)) | ||
308 | return; | 312 | return; |
309 | #endif | 313 | #endif |
310 | #ifdef CONFIG_KGDB_LOW_LEVEL_TRAP | 314 | #ifdef CONFIG_KGDB_LOW_LEVEL_TRAP |