diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-19 09:11:24 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-19 09:11:24 -0700 |
commit | 8835ca59dac2bc1e0136791abf3ccd51588803ce (patch) | |
tree | 29baa574daa8ea326ac07ba43a21e23d7a792fc0 /kernel/printk/printk.c | |
parent | 63ae602cea637ee4a6490d940c0da5d78bd0bbe0 (diff) | |
download | lwn-8835ca59dac2bc1e0136791abf3ccd51588803ce.tar.gz lwn-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/printk.c')
-rw-r--r-- | kernel/printk/printk.c | 4 |
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)) |