summaryrefslogtreecommitdiffstats
path: root/kernel/printk
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-10-19 18:11:24 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2016-10-19 18:11:24 +0200
commit8835ca59dac2bc1e0136791abf3ccd51588803ce (patch)
tree29baa574daa8ea326ac07ba43a21e23d7a792fc0 /kernel/printk
parentMerge branch 'gup_flag-cleanups' (diff)
downloadlinux-8835ca59dac2bc1e0136791abf3ccd51588803ce.tar.xz
linux-8835ca59dac2bc1e0136791abf3ccd51588803ce.zip
printk: suppress empty continuation lines
We have a fairly common pattern where you print several things as continuations on one single line in a loop, and then at the end you do printk(KERN_CONT "\n"); to flush the buffered output. But if the output was flushed by something else (concurrent printk activity, or just system logging), we don't want that final flushing to just print an empty line. So just suppress empty continuation lines when they couldn't be merged into the line they are a continuation of. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/printk')
-rw-r--r--kernel/printk/printk.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index d5e397315473..de08fc90baaf 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -1769,6 +1769,10 @@ static size_t log_output(int facility, int level, enum log_flags lflags, const c
cont_flush();
}
+ /* Skip empty continuation lines that couldn't be added - they just flush */
+ if (!text_len && (lflags & LOG_CONT))
+ return 0;
+
/* If it doesn't end in a newline, try to buffer the current line */
if (!(lflags & LOG_NEWLINE)) {
if (cont_add(facility, level, lflags, text, text_len))