From e277fa9ec702fea7bd3135393c67327c821d5a3a Mon Sep 17 00:00:00 2001 From: Omar Sandoval Date: Wed, 23 May 2018 13:59:31 -0700 Subject: vmcore-dmesg: fix infinite loop if log buffer wraps around We hit a bug where vmcore-dmesg would get stuck in a loop, and since we were redirecting the output to a file, it wouldn't stop until it filled up the disk. This only happened when the dmesg buffer had filled up and wrapped around. It turns out that when we hit the end of the buffer, we are looping back to the first record instead of the beginning of the buffer, which will always loop forever. Fixes: e08d26b3b7f1 ("vmcore-dmesg: avoid allocating large memory chunk for log buf") Signed-off-by: Omar Sandoval Acked-by: Baoquan He Signed-off-by: Simon Horman --- vmcore-dmesg/vmcore-dmesg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c index e340ef4..7972788 100644 --- a/vmcore-dmesg/vmcore-dmesg.c +++ b/vmcore-dmesg/vmcore-dmesg.c @@ -689,7 +689,7 @@ static void dump_dmesg_structured(int fd) */ loglen = struct_val_u16(buf, log_offset_len); if (!loglen) - current_idx = log_first_idx; + current_idx = 0; else /* Move to next record */ current_idx += loglen; -- cgit