Immediately following an exit from the kdb shell the kgdb_connected variable should be set to zero, unless there are breakpoints planted. If the kgdb_connected variable is not zeroed out with kdb, it is impossible to turn off kdb. This patch is merely a work around for now, the real fix will check for the breakpoints.
Showing the changes to kernel/debug/debug_core.c (1 of 1 file). Show all
Unified · Split
| @@ -605,13 +605,13 @@ cpu_master_loop: · 604 unmodified lines | |||
| 605 | if (dbg_kdb_mode) { | 605 | if (dbg_kdb_mode) { |
| 606 | kgdb_connected = 1; | 606 | kgdb_connected = 1; |
| 607 | error = kdb_stub(ks); | 607 | error = kdb_stub(ks); |
| 608 | kgdb_connected = 0; | ||
| 608 | } else { | 609 | } else { |
| 609 | error = gdb_serial_stub(ks); | 610 | error = gdb_serial_stub(ks); |
| 610 | } | 611 | } |
| 611 | 612 | ||
| 612 | if (error == DBG_PASS_EVENT) { | 613 | if (error == DBG_PASS_EVENT) { |
| 613 | dbg_kdb_mode = !dbg_kdb_mode; | 614 | dbg_kdb_mode = !dbg_kdb_mode; |
| 614 | kgdb_connected = 0; | ||
| 615 | } else if (error == DBG_SWITCH_CPU_EVENT) { | 615 | } else if (error == DBG_SWITCH_CPU_EVENT) { |
| 616 | dbg_cpu_switch(cpu, dbg_switch_cpu); | 616 | dbg_cpu_switch(cpu, dbg_switch_cpu); |
| 617 | goto cpu_loop; | 617 | goto cpu_loop; |