[kexec-tools/f20] vmcore-dmesg: Handle struct log to struct printk_log renaming
WANG Chao
wangchao at fedoraproject.org
Wed Aug 6 04:23:38 UTC 2014
commit ba67370b945c4454f8fa7fba21694db3ece627aa
Author: WANG Chao <chaowang at redhat.com>
Date: Wed Aug 6 12:18:24 2014 +0800
vmcore-dmesg: Handle struct log to struct printk_log renaming
Backport the following commit from upstream kexec-tools:
commit c96b723
Author: Vivek Goyal <vgoyal at redhat.com>
Date: Thu May 22 10:43:14 2014 -0400
vmcore-dmesg: Handle struct log to struct printk_log renaming
vmcore-dmesg has been failing for me for quite some time as struct log
was renamed to struct printk_log.
62e32ac printk: rename struct log to struct printk_log
This patch has been sitting in mailing list for quite some time. It
is time to repost the patch.
I took original patch of Lubomir and modified a bit to take care of
concern of hardcoded string length.
Now vmcore-dmesg will work again for kernel > 3.11
Signed-off-by: WANG Chao <chaowang at redhat.com>
...g-Handle-struct-log-to-struct-printk_log-.patch | 106 ++++++++++++++++++++
kexec-tools.spec | 2 +
2 files changed, 108 insertions(+), 0 deletions(-)
---
diff --git a/kexec-tools-2.0.4-vmcore-dmesg-Handle-struct-log-to-struct-printk_log-.patch b/kexec-tools-2.0.4-vmcore-dmesg-Handle-struct-log-to-struct-printk_log-.patch
new file mode 100644
index 0000000..785be17
--- /dev/null
+++ b/kexec-tools-2.0.4-vmcore-dmesg-Handle-struct-log-to-struct-printk_log-.patch
@@ -0,0 +1,106 @@
+From c96b723e17eb4af689de494b636d8bded4b98c88 Mon Sep 17 00:00:00 2001
+From: Vivek Goyal <vgoyal at redhat.com>
+Date: Thu, 22 May 2014 10:43:14 -0400
+Subject: [PATCH] vmcore-dmesg: Handle struct log to struct printk_log renaming
+
+vmcore-dmesg has been failing for me for quite some time as struct log
+was renamed to struct printk_log.
+
+62e32ac printk: rename struct log to struct printk_log
+
+This patch has been sitting in mailing list for quite some time. It
+is time to repost the patch.
+
+I took original patch of Lubomir and modified a bit to take care of
+concern of hardcoded string length.
+
+Signed-off-by: Lubomir Rintel <lkundrak at v3.sk>
+Signed-off-by: Vivek Goyal <vgoyal at redhat.com>
+Signed-off-by: Simon Horman <horms at verge.net.au>
+---
+ vmcore-dmesg/vmcore-dmesg.c | 53 ++++++++++++++++++++++++++++++++-------------
+ 1 file changed, 38 insertions(+), 15 deletions(-)
+
+diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c
+index e15cd91..f47ee11 100644
+--- a/vmcore-dmesg/vmcore-dmesg.c
++++ b/vmcore-dmesg/vmcore-dmesg.c
+@@ -35,10 +35,10 @@ static loff_t logged_chars_vaddr;
+ static loff_t log_first_idx_vaddr;
+ static loff_t log_next_idx_vaddr;
+
+-/* struct log size */
++/* struct printk_log (or older log) size */
+ static uint64_t log_sz;
+
+-/* struct log field offsets */
++/* struct printk_log (or older log) field offsets */
+ static uint64_t log_offset_ts_nsec = UINT64_MAX;
+ static uint16_t log_offset_len = UINT16_MAX;
+ static uint16_t log_offset_text_len = UINT16_MAX;
+@@ -255,6 +255,7 @@ static void scan_vmcoreinfo(char *start, size_t size)
+ char *pos, *eol;
+ char temp_buf[1024];
+ bool last_line = false;
++ char *str;
+
+ #define SYMBOL(sym) { \
+ .str = "SYMBOL(" #sym ")=", \
+@@ -325,19 +326,41 @@ static void scan_vmcoreinfo(char *start, size_t size)
+ *symbol[i].vaddr = vaddr;
+ }
+
+- /* Check for "SIZE(log)=" */
+- if (memcmp("SIZE(log)=", pos, 10) == 0)
+- log_sz = strtoull(pos + 10, NULL, 10);
+-
+- /* Check for struct log field offsets */
+- if (memcmp("OFFSET(log.ts_nsec)=", pos, 20) == 0)
+- log_offset_ts_nsec = strtoull(pos + 20, NULL, 10);
+-
+- if (memcmp("OFFSET(log.len)=", pos, 16) == 0)
+- log_offset_len = strtoul(pos + 16, NULL, 10);
+-
+- if (memcmp("OFFSET(log.text_len)=", pos, 21) == 0)
+- log_offset_text_len = strtoul(pos + 21, NULL, 10);
++ /* Check for "SIZE(printk_log)" or older "SIZE(log)=" */
++ str = "SIZE(log)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_sz = strtoull(pos + strlen(str), NULL, 10);
++
++ str = "SIZE(printk_log)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_sz = strtoull(pos + strlen(str), NULL, 10);
++
++ /* Check for struct printk_log (or older log) field offsets */
++ str = "OFFSET(log.ts_nsec)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_offset_ts_nsec = strtoull(pos + strlen(str), NULL,
++ 10);
++ str = "OFFSET(printk_log.ts_nsec)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_offset_ts_nsec = strtoull(pos + strlen(str), NULL,
++ 10);
++
++ str = "OFFSET(log.len)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_offset_len = strtoul(pos + strlen(str), NULL, 10);
++
++ str = "OFFSET(printk_log.len)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_offset_len = strtoul(pos + strlen(str), NULL, 10);
++
++ str = "OFFSET(log.text_len)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_offset_text_len = strtoul(pos + strlen(str), NULL,
++ 10);
++ str = "OFFSET(printk_log.text_len)=";
++ if (memcmp(str, pos, strlen(str)) == 0)
++ log_offset_text_len = strtoul(pos + strlen(str), NULL,
++ 10);
+
+ if (last_line)
+ break;
+--
+1.9.3
+
diff --git a/kexec-tools.spec b/kexec-tools.spec
index c738162..c4d2baf 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -98,6 +98,7 @@ Patch616: kexec-tools-2.0.4-makedumpfile-Fall-back-to-read-when-mmap-fails.patch
Patch617: kexec-tools-2.0.4-vmcore-dmesg-struct_val_u64-not-casting-u64-to-u32.patch
Patch618: kexec-tools-2.0.4-makedumpfile-Improve-progress-information-for-huge-memor.patch
Patch619: kexec-tools-2.0.4-vmcore-dmesg-stack-smashing-happend-in-extreme-case.patch
+Patch620: kexec-tools-2.0.4-vmcore-dmesg-Handle-struct-log-to-struct-printk_log-.patch
%description
kexec-tools provides /sbin/kexec binary that facilitates a new
@@ -148,6 +149,7 @@ tar -z -x -v -f %{SOURCE19}
%patch617 -p1
%patch618 -p1
%patch619 -p1
+%patch620 -p1
tar -z -x -v -f %{SOURCE13}
More information about the scm-commits
mailing list