Skip to content

Commit 054c22b

Browse files
jognesspmladek
authored andcommitted
printk: flush consoles before checking progress
Commit 9e70a5e ("printk: Add per-console suspended state") removed console lock usage during resume and replaced it with the clearly defined console_list_lock and srcu mechanisms. However, the console lock usage had an important side-effect of flushing the consoles. After its removal, consoles were no longer flushed before checking their progress. Add the console_lock/console_unlock dance to the beginning of __pr_flush() to actually flush the consoles before checking their progress. Also add comments to clarify this additional usage of the console lock. Note that console_unlock() does not guarantee flushing all messages since the commit dbdda84 ("printk: Add console owner and waiter logic to load balance console writes"). Reported-by: Todd Brandt <todd.e.brandt@intel.com> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217955 Fixes: 9e70a5e ("printk: Add per-console suspended state") Co-developed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Petr Mladek <pmladek@suse.com> Signed-off-by: John Ogness <john.ogness@linutronix.de> Link: https://lore.kernel.org/r/20231006082151.6969-2-pmladek@suse.com
1 parent 132a90d commit 054c22b

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

kernel/printk/printk.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3738,12 +3738,18 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre
37383738

37393739
seq = prb_next_seq(prb);
37403740

3741+
/* Flush the consoles so that records up to @seq are printed. */
3742+
console_lock();
3743+
console_unlock();
3744+
37413745
for (;;) {
37423746
diff = 0;
37433747

37443748
/*
37453749
* Hold the console_lock to guarantee safe access to
3746-
* console->seq.
3750+
* console->seq. Releasing console_lock flushes more
3751+
* records in case @seq is still not printed on all
3752+
* usable consoles.
37473753
*/
37483754
console_lock();
37493755

0 commit comments

Comments
 (0)