|
@@ -15,6 +15,7 @@
|
|
#include <linux/kprobes.h>
|
|
#include <linux/kprobes.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/kdebug.h>
|
|
#include <linux/kdebug.h>
|
|
|
|
+#include <linux/kgdb.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
#include <linux/ptrace.h>
|
|
#include <linux/ptrace.h>
|
|
@@ -451,6 +452,11 @@ void restart_nmi(void)
|
|
/* May run on IST stack. */
|
|
/* May run on IST stack. */
|
|
dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code)
|
|
dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code)
|
|
{
|
|
{
|
|
|
|
+#ifdef CONFIG_KGDB_LOW_LEVEL_TRAP
|
|
|
|
+ if (kgdb_ll_trap(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP)
|
|
|
|
+ == NOTIFY_STOP)
|
|
|
|
+ return;
|
|
|
|
+#endif /* CONFIG_KGDB_LOW_LEVEL_TRAP */
|
|
#ifdef CONFIG_KPROBES
|
|
#ifdef CONFIG_KPROBES
|
|
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)
|