Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/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

+11 -10
+1 -1
drivers/char/sysrq.c
··· 493 493 sysrq_key_table[i] = op_p; 494 494 } 495 495 496 - static void __handle_sysrq(int key, struct tty_struct *tty, int check_mask) 496 + void __handle_sysrq(int key, struct tty_struct *tty, int check_mask) 497 497 { 498 498 struct sysrq_key_op *op_p; 499 499 int orig_log_level;
+1
include/linux/sysrq.h
··· 45 45 */ 46 46 47 47 void handle_sysrq(int key, struct tty_struct *tty); 48 + void __handle_sysrq(int key, struct tty_struct *tty, int check_mask); 48 49 int register_sysrq_key(int key, struct sysrq_key_op *op); 49 50 int unregister_sysrq_key(int key, struct sysrq_key_op *op); 50 51 struct sysrq_key_op *__sysrq_get_key_op(int key);
+1 -1
kernel/debug/debug_core.c
··· 605 605 if (dbg_kdb_mode) { 606 606 kgdb_connected = 1; 607 607 error = kdb_stub(ks); 608 + kgdb_connected = 0; 608 609 } else { 609 610 error = gdb_serial_stub(ks); 610 611 } 611 612 612 613 if (error == DBG_PASS_EVENT) { 613 614 dbg_kdb_mode = !dbg_kdb_mode; 614 - kgdb_connected = 0; 615 615 } else if (error == DBG_SWITCH_CPU_EVENT) { 616 616 dbg_cpu_switch(cpu, dbg_switch_cpu); 617 617 goto cpu_loop;
+3 -6
kernel/debug/gdbstub.c
··· 621 621 switch (remcom_in_buffer[1]) { 622 622 case 's': 623 623 case 'f': 624 - if (memcmp(remcom_in_buffer + 2, "ThreadInfo", 10)) { 625 - error_packet(remcom_out_buffer, -EINVAL); 624 + if (memcmp(remcom_in_buffer + 2, "ThreadInfo", 10)) 626 625 break; 627 - } 628 626 629 627 i = 0; 630 628 remcom_out_buffer[0] = 'm'; ··· 663 665 pack_threadid(remcom_out_buffer + 2, thref); 664 666 break; 665 667 case 'T': 666 - if (memcmp(remcom_in_buffer + 1, "ThreadExtraInfo,", 16)) { 667 - error_packet(remcom_out_buffer, -EINVAL); 668 + if (memcmp(remcom_in_buffer + 1, "ThreadExtraInfo,", 16)) 668 669 break; 669 - } 670 + 670 671 ks->threadid = 0; 671 672 ptr = remcom_in_buffer + 17; 672 673 kgdb_hex2long(&ptr, &ks->threadid);
+5 -2
kernel/debug/kdb/kdb_main.c
··· 1820 1820 { 1821 1821 if (argc != 1) 1822 1822 return KDB_ARGCOUNT; 1823 - sysrq_toggle_support(1); 1824 1823 kdb_trap_printk++; 1825 - handle_sysrq(*argv[1], NULL); 1824 + __handle_sysrq(*argv[1], NULL, 0); 1826 1825 kdb_trap_printk--; 1827 1826 1828 1827 return 0; ··· 1882 1883 kdb_printf(" (Loading)"); 1883 1884 else 1884 1885 kdb_printf(" (Live)"); 1886 + kdb_printf(" 0x%p", mod->module_core); 1885 1887 1886 1888 #ifdef CONFIG_MODULE_UNLOAD 1887 1889 { ··· 2290 2290 2291 2291 while (va) { 2292 2292 char buf[80]; 2293 + 2294 + if (KDB_FLAG(CMD_INTERRUPT)) 2295 + return 0; 2293 2296 2294 2297 sprintf(buf, "%s " kdb_machreg_fmt "\n", command, va); 2295 2298 diag = kdb_parse(buf);