38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
From e277fa9ec702fea7bd3135393c67327c821d5a3a Mon Sep 17 00:00:00 2001
|
|
From: Omar Sandoval <osandov@fb.com>
|
|
Date: Wed, 23 May 2018 13:59:31 -0700
|
|
Subject: [PATCH 08/37] 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 <osandov@fb.com>
|
|
Acked-by: Baoquan He <bhe@redhat.com>
|
|
Signed-off-by: Simon Horman <horms@verge.net.au>
|
|
---
|
|
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;
|
|
--
|
|
2.6.4.windows.1
|
|
|