aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/kexec.h16
-rw-r--r--kernel/kexec.c10
-rw-r--r--kernel/ksysfs.c2
3 files changed, 15 insertions, 13 deletions
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 99f2d6f0c83a..83337456b716 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -123,18 +123,20 @@ int kexec_should_crash(struct task_struct *);
123void crash_save_cpu(struct pt_regs *regs, int cpu); 123void crash_save_cpu(struct pt_regs *regs, int cpu);
124void crash_save_vmcoreinfo(void); 124void crash_save_vmcoreinfo(void);
125void arch_crash_save_vmcoreinfo(void); 125void arch_crash_save_vmcoreinfo(void);
126void vmcoreinfo_append_str(const char *fmt, ...); 126void vmcoreinfo_append_str(const char *fmt, ...)
127 __attribute__ ((format (printf, 1, 2)));
127unsigned long paddr_vmcoreinfo_note(void); 128unsigned long paddr_vmcoreinfo_note(void);
128 129
129#define SYMBOL(name) \ 130#define SYMBOL(name) \
130 vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)&name) 131 vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)&name)
131#define SIZE(name) \ 132#define SIZE(name) \
132 vmcoreinfo_append_str("SIZE(%s)=%d\n", #name, sizeof(struct name)) 133 vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
134 (unsigned long)sizeof(struct name))
133#define OFFSET(name, field) \ 135#define OFFSET(name, field) \
134 vmcoreinfo_append_str("OFFSET(%s.%s)=%d\n", #name, #field, \ 136 vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \
135 &(((struct name *)0)->field)) 137 (unsigned long)&(((struct name *)0)->field))
136#define LENGTH(name, value) \ 138#define LENGTH(name, value) \
137 vmcoreinfo_append_str("LENGTH(%s)=%d\n", #name, value) 139 vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value)
138#define CONFIG(name) \ 140#define CONFIG(name) \
139 vmcoreinfo_append_str("CONFIG_%s=y\n", #name) 141 vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
140 142
@@ -177,8 +179,8 @@ extern struct resource crashk_res;
177typedef u32 note_buf_t[KEXEC_NOTE_BYTES/4]; 179typedef u32 note_buf_t[KEXEC_NOTE_BYTES/4];
178extern note_buf_t *crash_notes; 180extern note_buf_t *crash_notes;
179extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4]; 181extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4];
180extern unsigned int vmcoreinfo_size; 182extern size_t vmcoreinfo_size;
181extern unsigned int vmcoreinfo_max_size; 183extern size_t vmcoreinfo_max_size;
182 184
183 185
184#else /* !CONFIG_KEXEC */ 186#else /* !CONFIG_KEXEC */
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 67828befbfc3..b979b010b6d8 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -38,8 +38,8 @@ note_buf_t* crash_notes;
38/* vmcoreinfo stuff */ 38/* vmcoreinfo stuff */
39unsigned char vmcoreinfo_data[VMCOREINFO_BYTES]; 39unsigned char vmcoreinfo_data[VMCOREINFO_BYTES];
40u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4]; 40u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4];
41unsigned int vmcoreinfo_size = 0; 41size_t vmcoreinfo_size;
42unsigned int vmcoreinfo_max_size = sizeof(vmcoreinfo_data); 42size_t vmcoreinfo_max_size = sizeof(vmcoreinfo_data);
43 43
44/* Location of the reserved area for the crash kernel */ 44/* Location of the reserved area for the crash kernel */
45struct resource crashk_res = { 45struct resource crashk_res = {
@@ -1153,7 +1153,7 @@ void crash_save_vmcoreinfo(void)
1153 if (!vmcoreinfo_size) 1153 if (!vmcoreinfo_size)
1154 return; 1154 return;
1155 1155
1156 vmcoreinfo_append_str("CRASHTIME=%d", xtime.tv_sec); 1156 vmcoreinfo_append_str("CRASHTIME=%ld", get_seconds());
1157 1157
1158 buf = (u32 *)vmcoreinfo_note; 1158 buf = (u32 *)vmcoreinfo_note;
1159 1159
@@ -1195,8 +1195,8 @@ unsigned long __attribute__ ((weak)) paddr_vmcoreinfo_note(void)
1195 1195
1196static int __init crash_save_vmcoreinfo_init(void) 1196static int __init crash_save_vmcoreinfo_init(void)
1197{ 1197{
1198 vmcoreinfo_append_str("OSRELEASE=%s\n", UTS_RELEASE); 1198 vmcoreinfo_append_str("OSRELEASE=%s\n", init_uts_ns.name.release);
1199 vmcoreinfo_append_str("PAGESIZE=%d\n", PAGE_SIZE); 1199 vmcoreinfo_append_str("PAGESIZE=%ld\n", PAGE_SIZE);
1200 1200
1201 SYMBOL(init_uts_ns); 1201 SYMBOL(init_uts_ns);
1202 SYMBOL(node_online_map); 1202 SYMBOL(node_online_map);
diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
index 38b38f957ef0..65daa5373ca6 100644
--- a/kernel/ksysfs.c
+++ b/kernel/ksysfs.c
@@ -66,7 +66,7 @@ static ssize_t vmcoreinfo_show(struct kset *kset, char *page)
66{ 66{
67 return sprintf(page, "%lx %x\n", 67 return sprintf(page, "%lx %x\n",
68 paddr_vmcoreinfo_note(), 68 paddr_vmcoreinfo_note(),
69 vmcoreinfo_max_size); 69 (unsigned int)vmcoreinfo_max_size);
70} 70}
71KERNEL_ATTR_RO(vmcoreinfo); 71KERNEL_ATTR_RO(vmcoreinfo);
72 72