Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e916beab authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb:
  sysrq,kdb: Use __handle_sysrq() for kdb's sysrq function
  debug_core,kdb: fix kgdb_connected bit set in the wrong place
  Fix merge regression from external kdb to upstream kdb
  repair gdbstub to match the gdbserial protocol specification
  kdb: break out of kdb_ll() when command is terminated
parents 4c0c03ca edd63cb6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -493,7 +493,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
                sysrq_key_table[i] = op_p;
}

static void __handle_sysrq(int key, struct tty_struct *tty, int check_mask)
void __handle_sysrq(int key, struct tty_struct *tty, int check_mask)
{
	struct sysrq_key_op *op_p;
	int orig_log_level;
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ struct sysrq_key_op {
 */

void handle_sysrq(int key, struct tty_struct *tty);
void __handle_sysrq(int key, struct tty_struct *tty, int check_mask);
int register_sysrq_key(int key, struct sysrq_key_op *op);
int unregister_sysrq_key(int key, struct sysrq_key_op *op);
struct sysrq_key_op *__sysrq_get_key_op(int key);
+1 −1
Original line number Diff line number Diff line
@@ -605,13 +605,13 @@ cpu_master_loop:
		if (dbg_kdb_mode) {
			kgdb_connected = 1;
			error = kdb_stub(ks);
			kgdb_connected = 0;
		} else {
			error = gdb_serial_stub(ks);
		}

		if (error == DBG_PASS_EVENT) {
			dbg_kdb_mode = !dbg_kdb_mode;
			kgdb_connected = 0;
		} else if (error == DBG_SWITCH_CPU_EVENT) {
			dbg_cpu_switch(cpu, dbg_switch_cpu);
			goto cpu_loop;
+3 −6
Original line number Diff line number Diff line
@@ -621,10 +621,8 @@ static void gdb_cmd_query(struct kgdb_state *ks)
	switch (remcom_in_buffer[1]) {
	case 's':
	case 'f':
		if (memcmp(remcom_in_buffer + 2, "ThreadInfo", 10)) {
			error_packet(remcom_out_buffer, -EINVAL);
		if (memcmp(remcom_in_buffer + 2, "ThreadInfo", 10))
			break;
		}

		i = 0;
		remcom_out_buffer[0] = 'm';
@@ -665,10 +663,9 @@ static void gdb_cmd_query(struct kgdb_state *ks)
		pack_threadid(remcom_out_buffer + 2, thref);
		break;
	case 'T':
		if (memcmp(remcom_in_buffer + 1, "ThreadExtraInfo,", 16)) {
			error_packet(remcom_out_buffer, -EINVAL);
		if (memcmp(remcom_in_buffer + 1, "ThreadExtraInfo,", 16))
			break;
		}

		ks->threadid = 0;
		ptr = remcom_in_buffer + 17;
		kgdb_hex2long(&ptr, &ks->threadid);
+5 −2
Original line number Diff line number Diff line
@@ -1820,9 +1820,8 @@ static int kdb_sr(int argc, const char **argv)
{
	if (argc != 1)
		return KDB_ARGCOUNT;
	sysrq_toggle_support(1);
	kdb_trap_printk++;
	handle_sysrq(*argv[1], NULL);
	__handle_sysrq(*argv[1], NULL, 0);
	kdb_trap_printk--;

	return 0;
@@ -1883,6 +1882,7 @@ static int kdb_lsmod(int argc, const char **argv)
			kdb_printf(" (Loading)");
		else
			kdb_printf(" (Live)");
		kdb_printf(" 0x%p", mod->module_core);

#ifdef CONFIG_MODULE_UNLOAD
		{
@@ -2291,6 +2291,9 @@ static int kdb_ll(int argc, const char **argv)
	while (va) {
		char buf[80];

		if (KDB_FLAG(CMD_INTERRUPT))
			return 0;

		sprintf(buf, "%s " kdb_machreg_fmt "\n", command, va);
		diag = kdb_parse(buf);
		if (diag)