diff options
| -rw-r--r-- | arch/x86/kernel/traps.c | 7 | ||||
| -rw-r--r-- | kernel/context_tracking.c | 3 | 
2 files changed, 7 insertions, 3 deletions
| diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index c6eb418c5627..0d0e922fafc1 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -343,6 +343,7 @@ dotraplinkage void notrace do_int3(struct pt_regs *regs, long error_code)  	if (poke_int3_handler(regs))  		return; +	prev_state = exception_enter();  #ifdef CONFIG_KGDB_LOW_LEVEL_TRAP  	if (kgdb_ll_trap(DIE_INT3, "int3", regs, error_code, X86_TRAP_BP,  				SIGTRAP) == NOTIFY_STOP) @@ -351,9 +352,8 @@ dotraplinkage void notrace do_int3(struct pt_regs *regs, long error_code)  #ifdef CONFIG_KPROBES  	if (kprobe_int3_handler(regs)) -		return; +		goto exit;  #endif -	prev_state = exception_enter();  	if (notify_die(DIE_INT3, "int3", regs, error_code, X86_TRAP_BP,  			SIGTRAP) == NOTIFY_STOP) @@ -433,6 +433,8 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code)  	unsigned long dr6;  	int si_code; +	prev_state = exception_enter(); +  	get_debugreg(dr6, 6);  	/* Filter out all the reserved bits which are preset to 1 */ @@ -465,7 +467,6 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code)  	if (kprobe_debug_handler(regs))  		goto exit;  #endif -	prev_state = exception_enter();  	if (notify_die(DIE_DEBUG, "debug", regs, (long)&dr6, error_code,  							SIGTRAP) == NOTIFY_STOP) diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c index 019d45008448..5664985c46a0 100644 --- a/kernel/context_tracking.c +++ b/kernel/context_tracking.c @@ -19,6 +19,7 @@  #include <linux/sched.h>  #include <linux/hardirq.h>  #include <linux/export.h> +#include <linux/kprobes.h>  #define CREATE_TRACE_POINTS  #include <trace/events/context_tracking.h> @@ -104,6 +105,7 @@ void context_tracking_user_enter(void)  	}  	local_irq_restore(flags);  } +NOKPROBE_SYMBOL(context_tracking_user_enter);  #ifdef CONFIG_PREEMPT  /** @@ -181,6 +183,7 @@ void context_tracking_user_exit(void)  	}  	local_irq_restore(flags);  } +NOKPROBE_SYMBOL(context_tracking_user_exit);  /**   * __context_tracking_task_switch - context switch the syscall callbacks | 
