[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