aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/ramoops.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/ramoops.c')
-rw-r--r--drivers/char/ramoops.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/char/ramoops.c b/drivers/char/ramoops.c
index d3d63be2cd3..1a9f5f6d6ac 100644
--- a/drivers/char/ramoops.c
+++ b/drivers/char/ramoops.c
@@ -30,7 +30,7 @@
30 30
31#define RAMOOPS_KERNMSG_HDR "====" 31#define RAMOOPS_KERNMSG_HDR "===="
32 32
33#define RECORD_SIZE 4096 33#define RECORD_SIZE 4096UL
34 34
35static ulong mem_address; 35static ulong mem_address;
36module_param(mem_address, ulong, 0400); 36module_param(mem_address, ulong, 0400);
@@ -68,11 +68,16 @@ static void ramoops_do_dump(struct kmsg_dumper *dumper,
68 char *buf, *buf_orig; 68 char *buf, *buf_orig;
69 struct timeval timestamp; 69 struct timeval timestamp;
70 70
71 if (reason != KMSG_DUMP_OOPS &&
72 reason != KMSG_DUMP_PANIC &&
73 reason != KMSG_DUMP_KEXEC)
74 return;
75
71 /* Only dump oopses if dump_oops is set */ 76 /* Only dump oopses if dump_oops is set */
72 if (reason == KMSG_DUMP_OOPS && !dump_oops) 77 if (reason == KMSG_DUMP_OOPS && !dump_oops)
73 return; 78 return;
74 79
75 buf = (char *)(cxt->virt_addr + (cxt->count * RECORD_SIZE)); 80 buf = cxt->virt_addr + (cxt->count * RECORD_SIZE);
76 buf_orig = buf; 81 buf_orig = buf;
77 82
78 memset(buf, '\0', RECORD_SIZE); 83 memset(buf, '\0', RECORD_SIZE);
@@ -83,8 +88,8 @@ static void ramoops_do_dump(struct kmsg_dumper *dumper,
83 buf += res; 88 buf += res;
84 89
85 hdr_size = buf - buf_orig; 90 hdr_size = buf - buf_orig;
86 l2_cpy = min(l2, (unsigned long)(RECORD_SIZE - hdr_size)); 91 l2_cpy = min(l2, RECORD_SIZE - hdr_size);
87 l1_cpy = min(l1, (unsigned long)(RECORD_SIZE - hdr_size) - l2_cpy); 92 l1_cpy = min(l1, RECORD_SIZE - hdr_size - l2_cpy);
88 93
89 s2_start = l2 - l2_cpy; 94 s2_start = l2 - l2_cpy;
90 s1_start = l1 - l1_cpy; 95 s1_start = l1 - l1_cpy;