|
@@ -2703,14 +2703,18 @@ void register_console(struct console *newcon)
|
|
|
logbuf_lock_irqsave(flags);
|
|
|
console_seq = syslog_seq;
|
|
|
console_idx = syslog_idx;
|
|
|
- logbuf_unlock_irqrestore(flags);
|
|
|
/*
|
|
|
* We're about to replay the log buffer. Only do this to the
|
|
|
* just-registered console to avoid excessive message spam to
|
|
|
* the already-registered consoles.
|
|
|
+ *
|
|
|
+ * Set exclusive_console with disabled interrupts to reduce
|
|
|
+ * race window with eventual console_flush_on_panic() that
|
|
|
+ * ignores console_lock.
|
|
|
*/
|
|
|
exclusive_console = newcon;
|
|
|
exclusive_console_stop_seq = console_seq;
|
|
|
+ logbuf_unlock_irqrestore(flags);
|
|
|
}
|
|
|
console_unlock();
|
|
|
console_sysfs_notify();
|