printk: ringbuffer: support dataless records
authorJohn Ogness <john.ogness@linutronix.de>
Tue, 21 Jul 2020 13:25:28 +0000 (15:31 +0206)
committerPetr Mladek <pmladek@suse.com>
Tue, 8 Sep 2020 07:32:59 +0000 (09:32 +0200)
commitd397820f36ffe4701343b6ee12687d60db0ed8db
tree1e0e4cf837e026131eaaa7ede9753cf11ed8959f
parent3270ecb5214ad11a4a94af92c4bf47740c90d294
printk: ringbuffer: support dataless records

With commit 896fbe20b4e2333fb55 ("printk: use the lockless ringbuffer"),
printk() started silently dropping messages without text because such
records are not supported by the new printk ringbuffer.

Add support for such records.

Currently dataless records are denoted by INVALID_LPOS in order
to recognize failed prb_reserve() calls. Change the ringbuffer
to instead use two different identifiers (FAILED_LPOS and
NO_LPOS) to distinguish between failed prb_reserve() records and
successful dataless records, respectively.

Fixes: 896fbe20b4e2333fb55 ("printk: use the lockless ringbuffer")
Fixes: https://lkml.kernel.org/r/20200718121053.GA691245@elver.google.com
Reported-by: Marco Elver <elver@google.com>
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Marco Elver <elver@google.com>
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20200721132528.9661-1-john.ogness@linutronix.de
kernel/printk/printk_ringbuffer.c
kernel/printk/printk_ringbuffer.h