diff options
author | John Ogness <john.ogness@linutronix.de> | 2020-11-26 12:54:36 +0106 |
---|---|---|
committer | Petr Mladek <pmladek@suse.com> | 2020-11-27 11:58:54 +0100 |
commit | 4ad9921af4f18490980369f7d60f90ade0195812 (patch) | |
tree | 988e34d10be38b6c17d72a3cce05bc6dfd8abe5f /kernel/printk | |
parent | 8119c4332d253660e0a6b8748fe0749961cfbc97 (diff) | |
download | linux-4ad9921af4f18490980369f7d60f90ade0195812.tar.gz linux-4ad9921af4f18490980369f7d60f90ade0195812.tar.bz2 linux-4ad9921af4f18490980369f7d60f90ade0195812.zip |
printk: finalize records with trailing newlines
Any record with a trailing newline (LOG_NEWLINE flag) cannot
be continued because the newline has been stripped and will
not be visible if the message is appended. This was already
handled correctly when committing in log_output() but was
not handled correctly when committing in log_store().
Fixes: f5f022e53b87 ("printk: reimplement log_cont using record extension")
Link: https://lore.kernel.org/r/20201126114836.14750-1-john.ogness@linutronix.de
Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Diffstat (limited to 'kernel/printk')
-rw-r--r-- | kernel/printk/printk.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index fe64a49344bf..bc1e3b5a97bd 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -528,8 +528,8 @@ static int log_store(u32 caller_id, int facility, int level, if (dev_info) memcpy(&r.info->dev_info, dev_info, sizeof(r.info->dev_info)); - /* insert message */ - if ((flags & LOG_CONT) || !(flags & LOG_NEWLINE)) + /* A message without a trailing newline can be continued. */ + if (!(flags & LOG_NEWLINE)) prb_commit(&e); else prb_final_commit(&e); |