diff --git a/kernel/panic.c b/kernel/panic.c
index bcdef26..f9950e3 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -22,6 +22,7 @@
#include <linux/init.h>
#include <linux/nmi.h>
#include <linux/dmi.h>
+#include <linux/tty.h>
It's odd that kmsg_redirect is declared in tty.h when it's purely a
vt.c thing. Why not vt.h?
int panic_on_oops;
static unsigned long tainted_mask;
@@ -65,6 +66,9 @@ NORET_TYPE void panic(const char * fmt, ...)
*/
preempt_disable();
+ /* don't redirect the panic message to some hidden console */
+ kmsg_redirect = 0;
+
bust_spinlocks(1);
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
Methinks CONFIG_HW_CONSOLE=n kernels won't link after making this
change.
I'd suggest something like
#ifdef CONFIG_HW_CONSOLE
extern void vt_set_kmsg_redirect(int vt);
#else
static inline void vt_set_kmsg_redirect(int vt)
{
}
#endif
Another possible way of doing this would be for vt.c to hook itself
into panic_notifier_list. That's nice and clean from a
separation-of-subsystems POV but isn't really conceptually correct - it
assumes that other entries on panic_notifier_list don't print messages
to the console.