1
0
Fork 0

printk: ringbuffer: fix line counting

[ Upstream commit 668af87f99 ]

Counting text lines in a record simply involves counting the number
of newline characters (+1). However, it is searching the full data
block for newline characters, even though the text data can be (and
often is) a subset of that area. Since the extra area in the data
block was never initialized, the result is that extra newlines may
be seen and counted.

Restrict newline searching to the text data length.

Fixes: b6cf8b3f33 ("printk: add lockless ringbuffer")
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20210113144234.6545-1-john.ogness@linutronix.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
pull/237/head^2
John Ogness 2021-01-13 15:48:34 +01:06 committed by Greg Kroah-Hartman
parent 2cd90971a2
commit cf3cca5f15
1 changed files with 1 additions and 1 deletions

View File

@ -1720,7 +1720,7 @@ static bool copy_data(struct prb_data_ring *data_ring,
/* Caller interested in the line count? */
if (line_count)
*line_count = count_lines(data, data_size);
*line_count = count_lines(data, len);
/* Caller interested in the data content? */
if (!buf || !buf_size)