It is possible to reach this function from ddb via the "reset" command.
When this happens, we don't actually exit kdb, meaning we never execute
the latter steps of kdb_break() to restore the system state (e.g.
re-enable scheduler).
Therefore, we should not clear the kdb_active flag in this function, as
the debugger is still active. Put differently, kern_reboot() is not an
authority on kdb state, and should not touch it. The original motivation
for this assignment is not clear; I have checked thoroughly and I am
convinced it is not required by any reset code.
This fixes an edge case where a panic can be triggered during reset from
ddb:
- Enter ddb via keyboard break sequence (KERNEL_PANICKED() == false && td->td_critnest > 0)
- Execute the "reset" command
- kern_reboot() sets kdb_active = false
- A witness_checkorder() call via shutdown handler sees !kdb_active and panics
This is my preferred alternative to the initial fix I proposed in D38656.