From: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
To: ralf@linux-mips.org, michael@ellerman.id.au,
benh@kernel.crashing.org, paulus@samba.org,
holzheu@linux.vnet.ibm.com, schwidefsky@de.ibm.com,
heiko.carstens@de.ibm.com, vgoyal@redhat.com
Cc: kexec@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [RESEND PATCH 0/4] kdump: make saved_max_pfn exlusive
Date: Mon, 04 Feb 2013 15:42:08 +0900 [thread overview]
Message-ID: <20130204064112.13324.89478.stgit@localhost6.localdomain6> (raw)
# I emailed to Vivek at old email address so resend. Please reply to
# this RESEND patch series. Sorry for this noise...
First, there are two kinds of notation to represent a map: inclusive
and exclusive. Here are the examples:
1) [mem 0x0000000100000000-0x000000013fffffff]
2) [mem 0x0000000100000000-0x0000000140000000]
1) is inclusive and 2) is exclusive. In case of 1), the pfn calculated
from the end address belongs to the map, while in case of 2), it
doesn't.
Currently, saved_max_pfn is used in read_oldmem() as inclusive for a
check to see if a given request is to within kernel's memory mapping
regions.
while (count) {
pfn = *ppos / PAGE_SIZE;
if (pfn > saved_max_pfn)
return read;
Unfortunately, on x86 and ia64, there are bugs below:
- On the 1st kernel, saved_max_pfn is not initialized so 0. Then, read
to pfn 0 is not guarded by the condition and the execution goes into
ioremap path.
- On the 2nd kernel, x86 and ia64 wrongly initializes saved_max_pfn by
exclusive value, on x86 as:
saved_max_pfn = e820_end_of_ram_pfn();
by which via /dev/oldmem we can read max_pfn that is not kernel's
memory.
To fix this, fixing x86 and ia64 part needs smaller change, but
max_pfn is originally treated as exclusive so saved_max_pfn should
normally be exclusive. Also, the memory map information passed from
kexec is all exclusive on every architectures; it's possible to make
saved_max_pfn exclusive now.
However, ppc and ppc64 on kexec doesn't increment end address now and
this should be done as an insurance when map passed from firmware is
inclusive, for which I'll post a patch later.
---
HATAYAMA Daisuke (4):
kdump, oldmem: compare with saved_max_pfn exclusively
kdump, s390: make saved_max_pfn exclusive
kdump, ppc: make saved_max_pfn exclusive
kdump, mips: make saved_max_pfn exclusive
arch/mips/kernel/crash_dump.c | 2 +-
arch/powerpc/kernel/crash_dump.c | 2 +-
arch/s390/kernel/setup.c | 4 ++--
drivers/char/mem.c | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
--
Thanks.
HATAYAMA, Daisuke
next reply other threads:[~2013-02-04 6:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 6:42 HATAYAMA Daisuke [this message]
2013-02-04 6:42 ` [RESEND PATCH 1/4] kdump, mips: make saved_max_pfn exclusive HATAYAMA Daisuke
2013-02-04 6:42 ` [RESEND PATCH 2/4] kdump, ppc: " HATAYAMA Daisuke
2013-02-04 6:42 ` [RESEND PATCH 3/4] kdump, s390: " HATAYAMA Daisuke
2013-02-04 6:42 ` [RESEND PATCH 4/4] kdump, oldmem: compare with saved_max_pfn exclusively HATAYAMA Daisuke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130204064112.13324.89478.stgit@localhost6.localdomain6 \
--to=d.hatayama@jp.fujitsu.com \
--cc=benh@kernel.crashing.org \
--cc=heiko.carstens@de.ibm.com \
--cc=holzheu@linux.vnet.ibm.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael@ellerman.id.au \
--cc=paulus@samba.org \
--cc=ralf@linux-mips.org \
--cc=schwidefsky@de.ibm.com \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®