Skip to content

Commit

Permalink
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/jwessel/linux-2.6-kgdb

* '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
  • Loading branch information
torvalds committed Jul 22, 2010
2 parents 4c0c03c + edd63cb commit e916bea
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 10 deletions.
2 changes: 1 addition & 1 deletion drivers/char/sysrq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions include/linux/sysrq.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion kernel/debug/debug_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -605,13 +605,13 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs)
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;
Expand Down
9 changes: 3 additions & 6 deletions kernel/debug/gdbstub.c
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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);
Expand Down
7 changes: 5 additions & 2 deletions kernel/debug/kdb/kdb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
{
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit e916bea

Please sign in to comment.