[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130302083644.31252.31560.stgit@localhost6.localdomain6>
Date: Sat, 02 Mar 2013 17:36:44 +0900
From: HATAYAMA Daisuke <d.hatayama@...fujitsu.com>
To: vgoyal@...hat.com, ebiederm@...ssion.com, cpw@....com,
kumagai-atsushi@....nes.nec.co.jp, lisa.mitchell@...com,
heiko.carstens@...ibm.com, akpm@...ux-foundation.org
Cc: kexec@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: [PATCH v2 10/20] vmcore: read buffers for vmcore objects copied from
old memory
If flag MEM_TYPE_CURRENT_KERNEL is set, the object is copied in the
buffer on the 2nd kernel, then read_vmcore() reads the buffer. If the
flag is not set, read_vmcore() reads old memory as usual.
Signed-off-by: HATAYAMA Daisuke <d.hatayama@...fujitsu.com>
---
fs/proc/vmcore.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
index 09b7f34..c8899dc 100644
--- a/fs/proc/vmcore.c
+++ b/fs/proc/vmcore.c
@@ -158,10 +158,17 @@ static ssize_t read_vmcore(struct file *file, char __user *buffer,
tsz = m->offset + m->size - *fpos;
if (buflen < tsz)
tsz = buflen;
- start = m->paddr + *fpos - m->offset;
- tmp = read_from_oldmem(buffer, tsz, &start, 1);
- if (tmp < 0)
- return tmp;
+ if (m->flag & MEM_TYPE_CURRENT_KERNEL) {
+ if (copy_to_user(buffer,
+ m->buf + *fpos - m->offset,
+ tsz))
+ return -EFAULT;
+ } else {
+ start = m->paddr + *fpos - m->offset;
+ tmp = read_from_oldmem(buffer, tsz, &start, 1);
+ if (tmp < 0)
+ return tmp;
+ }
buflen -= tsz;
*fpos += tsz;
buffer += tsz;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists