lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <51549.166.70.238.45.1217815820.squirrel@webmail.wolfmountaingroup.com>
Date:	Sun, 3 Aug 2008 20:10:20 -0600 (MDT)
From:	jmerkey@...fmountaingroup.com
To:	linux-kernel@...r.kernel.org
Subject: [PATCH 2.6.26 2/25] mdb: Merkey's Kernel Debugger

Netware Style Debugger for Linux written by Jeffrey Vernon Merkey

--- linux-2.6.26/arch/x86/kernel/traps_32.c	2008-07-13
15:51:29.000000000 -0600
+++ linux-2.6.26-mdb/arch/x86/kernel/traps_32.c	2008-08-03
12:49:01.000000000 -0600
@@ -45,6 +45,16 @@
 #include <linux/edac.h>
 #endif

+#ifdef CONFIG_MDB
+#define DEBUGGER_EXCEPTION        1
+#define NMI_EXCEPTION             2
+#define BREAKPOINT_EXCEPTION      3
+#define SOFTWARE_EXCEPTION       22
+
+extern unsigned char *mdb_oops;
+extern int mdb(int reason, int error, void *frame);
+#endif
+
 #include <asm/arch_hooks.h>
 #include <asm/stacktrace.h>
 #include <asm/processor.h>
@@ -467,6 +477,10 @@
 	die.lock_owner = -1;
 	add_taint(TAINT_DIE);
 	__raw_spin_unlock(&die.lock);
+#ifdef	CONFIG_MDB
+        mdb_oops = (unsigned char *)str;
+        mdb(SOFTWARE_EXCEPTION, err, regs);
+#endif
 	raw_local_irq_restore(flags);

 	if (!regs)
@@ -592,7 +606,7 @@
 }

 DO_VM86_ERROR_INFO(0, SIGFPE,  "divide error", divide_error, FPE_INTDIV,
regs->ip)
-#ifndef CONFIG_KPROBES
+#if !defined(CONFIG_KPROBES) && !defined(CONFIG_MDB)
 DO_VM86_ERROR(3, SIGTRAP, "int3", int3)
 #endif
 DO_VM86_ERROR(4, SIGSEGV, "overflow", overflow)
@@ -733,6 +747,9 @@
 {
 	if (notify_die(DIE_NMIUNKNOWN, "nmi", regs, reason, 2, SIGINT) ==
NOTIFY_STOP)
 		return;
+#ifdef	CONFIG_MDB
+        mdb(NMI_EXCEPTION, reason, regs); // nmi is code 2
+#endif
 #ifdef CONFIG_MCA
 	/*
 	 * Might actually be able to figure out what the guilty party
@@ -771,6 +788,9 @@
 	printk(" on CPU%d, ip %08lx, registers:\n",
 		smp_processor_id(), regs->ip);
 	show_registers(regs);
+#ifdef	CONFIG_MDB
+        mdb(NMI_EXCEPTION, 0, regs); // nmi is code 2
+#endif
 	console_silent();
 	spin_unlock(&nmi_print_lock);
 	bust_spinlocks(0);
@@ -795,6 +815,10 @@
 	if (!smp_processor_id())
 		reason = get_nmi_reason();

+#if defined(CONFIG_SMP) && defined(CONFIG_MDB)
+        if (mdb(NMI_EXCEPTION, 0, regs))
+           return;
+#endif
 	if (!(reason & 0xc0)) {
 		if (notify_die(DIE_NMI_IPI, "nmi_ipi", regs, reason, 2, SIGINT)
 							== NOTIFY_STOP)
@@ -860,6 +884,10 @@
 #ifdef CONFIG_KPROBES
 void __kprobes do_int3(struct pt_regs *regs, long error_code)
 {
+#ifdef	CONFIG_MDB
+        if (mdb(BREAKPOINT_EXCEPTION, error_code, regs))
+           return;
+#endif
 	trace_hardirqs_fixup();

 	if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP)
@@ -875,6 +903,16 @@
 }
 #endif

+#if defined(CONFIG_MDB) && !defined(CONFIG_KPROBES)
+fastcall void do_int3(struct pt_regs * regs, long error_code)
+{
+#ifdef	CONFIG_MDB
+        if (mdb(BREAKPOINT_EXCEPTION, error_code, regs))
+           return;
+#endif
+	do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
+}
+#endif	/* CONFIG_KDB && !CONFIG_KPROBES */
 /*
  * Our handling of the processor debug registers is non-trivial.
  * We do not clear them on entry and exit from the kernel. Therefore
@@ -905,6 +943,10 @@
 	trace_hardirqs_fixup();

 	get_debugreg(condition, 6);
+#ifdef	CONFIG_MDB
+        if (mdb(DEBUGGER_EXCEPTION, error_code, regs))
+           return;
+#endif

 	/*
 	 * The processor cleared BTF, so don't mark that we need it set.

By making a contribution to this project, I certify that the contribution
was created in whole or in part by me and I have the right to submit it
under the open source license indicated in the file

Jeffrey Vernon Merkey





--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ